python函数与模块

目录

一:函数

1.无参函数

2.带参数函数

2.函数中变量中的作用域

4.内建函数

二:模块与包

1.模块

(1)模块定义

(2)模块导入

2.包

(1)包的使用

(2)__init__.py

3.常用模块

(1)keyword模块

(2)random模块

(3)sys模块

(4)time模块


一:函数

函数是一段可以重复使用的代码,通过传递的参数返回不同的结果
对于重复使用的代码,可以编写为自定义函数以便于重复使用代码,同时提高开发人员的
开发效率。函数可以分为无参函数和带参函数

1.无参函数

Python 的自定义无参函数并不复杂。

以关键字 def 开始,后面跟函数名、小括号、冒号,最后使用 return 退出函数。用表达式可以传递函数的返回值,如果没有返回值,则返回None。

函数是以字母、数字和下划线组成的字符串,但是不能以数字开头。

示例:使用无参数函数相加并输出之和

函数add()使用return语句返回两数相加的值,使用print输出到屏幕上。在处理函数时,如果没有return语句,会默认返回None,程序并不会报错。

使用函数一些错误:

  • 函数的定义要先于函数的调用,否则会出错
  • 函数的代码是一个整体,要注意缩进
  • 定义函数时要使用冒号,但调用时不可以使用

2.带参数函数

注意:形式参数只是占位符,用于体现参数个数,没有具体数值。

示例:定义并调用带参函数并完成相加的运算

当调用函数时,根据传递的实际参数出现位置与函数定义的参数位置进行匹配

示例:使用参数位置或关键字调用带参函数

调用带参函数时,传入函数的参数个数必须和声明的参数个数一致。当函数包含有多个参数时,一旦实参个数与形参个数不符,就可能出错。为了避免这样的错误发生,Python在函数定义时允许为形式参数指定默认值,从而在调用参数时可以少写参数,省略的参数用默认值为其赋值。

示例:编码实现计算器功能

要求:用户输入两个数字和运算符,程序根据用户指定的运算符执行,加,减,乘,除。实现步骤如下:

2.函数中变量中的作用域

作用域是指变量在程序中的应用范围,而变量声明的位置决定它的作用域。Python 按作用域区分有局部变量和全局变量。

全局变量是指在一个模块中最高级别的变量有全局作用域,除非被删除,否则存活到程 序运行结束,所有函数都能访问全局变量。

局部变量是指定义在函数内的变量有局部作用域,依赖于定义变量的函数现阶段是否处于活动状态。调用函数时,局部变量产生,暂时存在。一旦函数执行完,局部变量将会被释放。

局部变量和全局变量的使用规则:

  • 局部变量的作用域仅限于定义它的函数,
  • 全局变量的作用域在整个模块内部都是可见的,
  • 在同一个函数中,不允许有同名局部变量。
  • 在不同的函数中,可以有同名局部变量。
  • 在同一个程序中,全局变量和局部变量同名时,局部变量具有更高的优先级。

示例:使用函数输出年龄

全局变量

global 的作用是声明变量为全局变量,即使变量定义在函数内部,加上 global 后,也
可以在全局范围访问。

示例:

3.lambda函数

lambda 函数的作用是创建匿名函数,是一种声明函数的特殊方式。其中 params 相当于函数接收的参数列表,expr 是函数返回值的表达式。

4.内建函数

Python 除了本身的语法结构,还提供了常用的内建函数。内建函数是程序员经常使用到的方法,可以提高程序的编写效率。如 float()就是内建的函数。内建函数是自动加载的,Python的解释器可以识别。它不需要导入模块,不必做任何的操作,不需要引用就可以调用 。下面开始介绍常用的内建函数。

(1)abs()函数

abs()函数能够返回一个数字的绝对值,语法格式如下:

abs(x)

(2)bool函数

bool()函数返回值是 True 或 False,它是 Boolean(布尔值)的简写,
将参数x 转换为Boolean 类型,当参数是数字时,0 返回False,其他任何值都返回 True。参数是字符串时,None 或空字符串返回 False;否则返回 True。参数是空的列表、元组或字典返回 False;否则返回 True。

(3)float()函数

float()函数用于转换数据为float类型,

参数x可以是字符串或数字

(4)int()

int()函数可以将数据转换为整数

(5)range()

range()函数可以生成一个迭代对象

  • 第一个参数 start 表示起始值,是可选参数,默认值是 0。
  • 第二个参数 stop 表示终止值
  • 第三个参数表示步长,是可选参数,可以是正数或负数,默认值是1

(6)sum函数

sum()函数可以对列表中的元素求和

(7)max函数

max()函数可以返回列表,元组或字符串中最大的元素,如果元素是英文字母,那么字母是“大于”数字的,而小写字母“大于”大写字母

(8)min()函数

min()函数可以返回列表,元组或字符串中最小的元素,与max()的使用相反

二:模块与包

如果编写的程序中类和函数较多时,就需要对它们进行有效的组织分类,在Python 中模块和包都是组织的方式。复杂度较低可以使用模块管理,复杂度高则还要使用包进行管理。

1.模块

模块是 Python 中一个重要的概念,实际上就是包含 Python 函数或者类的程序。模块就是一个包含 Python 定义和语句的文件,把一组相关的函数或代码组织到一个文件中,一个文件即是一个模块。模块的文件名=模块名+后缀.py。模块之间代码共享,可以相互调用,实现代码重用,并且模块中函数名称必须唯一。

(1)模块定义

创建mymodule.py文件,内容如下:

在模块 mymodule 中,定义了 2 个函数,一个加法函数和一个乘法函数。它们处理的问题是同类的,作为一个模块定义。

(2)模块导入

使用模块中的函数时,要先导入模块才能使用,导入有2种方式。在一行导入一个模块,语法如下。

语法:import 模块名

还可以在一行导入多个模块,语法如下:

import 模块名 1[,模块名 2][,模块名 3]...

模块和变量一样也有作用域的区别。如果在模块的顶层导入,则作用域是全局的。如果在函数中导入,则作用域是局部的,其作用域只是所在的函数中。一个模块只能被加载一 次,无论它被导入多少次,可以阻止多重导入时代码被多次执行。在实际编码时,推荐直接在顶层导入。

导入的模块也分几种,有 Python 的标准库模块、第三方模块和应用程序自定义的模块。加载执行时在搜索路径中找到指定的模块,如果是第一次导入,模块将被加载并执行,之后再调用时就不需要再次加载了。

示例:导入标准库模块sys

示例:导入并调用自定义模块mymodule

模块名就是定义的文件名。在调用模块中函数的语句格式是“模块名,函数名”。每个模块都有 name 属性表示模块的名称。

如果不使用模块名,而直接用函数名进行调用,就需要在导入时指定需要使用模块的属 性,一行导入一个模块属性的语法如下。

from  模块名  import 属性名

一行导入模块的多个属性语法如下

:from 模块名 import 属性名 1[,属性名 2][,属性名 3]...

示例:

另外,还可以使用as关键字作为模块或模块属性重新命名

语法:import 模块名  as  模块新名称

         from  模块名  import  属性名  as  属性新名称

2.包

当程序中的模块非常多时,可以把模块在进行划分,组织新包。升级就是一个目录,但必须包含一个“ __init__.py ”文件。__init__.py 可以是一个空文件,表示当前目录是一个包。包还可以嵌套使用,包中还可以包含其他子包。

(1)包的使用

导入包中的模块只需要在模块前加上包的名称即可,如按以下方式组织的目录:

projec/  #目录

    project.py

    subproject/  #子目录

        __init__.py    #init前后两个下划线

        submodel.py

示例:在project.py中调用包 subproject 中 submodel.py 模块示例代码如下

在 subproject 目录下创建 submodel.py

在project目录下创建程序文件project.py

(2)__init__.py

前面使用的是空 -init-.py 文件,也可以在里添加代码,它的作用实际上是初始化包中的公共变量。在第一次使用 import 导入 subproject 包中的任何部分后,会执行包中的__init__.py文件代码

3.常用模块

(1)keyword模块

使用 keyword 模块可以査看 Python 语言的关键字,它的属性 kwlist 包含了所有 Python 关键字的列表。方法 iskeyword(字符串)用于判断参数是否是 Python 的关键字。如果参数是 Python 的关键字,则返回 True;否则,返回 False。

(2)random模块

random模块用于生成随机的数字,整数或字符串,常用方法如下:

方法操作
random()生成一个随机的浮点数,范围在0.0~1.0之间
uniform([上限][,下限])
在设定浮点数的范围内随机生成一个浮点数
randint([ 上限 ][ ,下限 ])
随机生成一个整数,可以指定这个整数的范围
choice( 序列 )
从任何序列中选取一个随机的元素返回
shuffle( 序列 )
随机打乱一个序列中元素的顺序
sample( 序列,长度 )
从指定的序列中随机截取指定长度的片断,序列本身不做修改

示例:使用random模块生成随机整数,并提取随机元素

(3)sys模块
属性/方法操作
version
获取解释器的版本信息
path
获取模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值
platform
获取操作系统平台名称
maxint
最大的 int
maxunicode
最大的 Unicode
stdin
读取信息到 Shell 程序中
stdout
Shell 程序输出信息
exit()
退出 Shell 程序
(4)time模块

time模块包含各种操作时间的方法:

属性 / 方法
操作
time()
获取当前时间戳
localtime()
获取当前时间的元组形式
ctime()
获取当前时间的字符串形式
asctime(t)
将时间转换成字符串,参数 t 是元组形式的时间
sleep(secs)
按指定的时间推迟运行,参数是推迟的时间,单位是秒

Python 中时间有时间戳和元组两种表示形式。时间戳的表现形式是以相对 1970.1.100:80:88 为起点,以秒计算的偏移量,是唯一的值。而以元组的形式表示则共有 9 个元素,分别是 year(4 位数字组成)、month(1-12)、day(1-31)、hours(0-23)、minutes(0-59)、second(8-59)、weekday(8-60 表示周一)、Julian day(1-366,一年里的天数)、DST flag(-1,0 或 1,是否是夏令时,默认为-1)

使用“time.time()”获得的是以秒为单位的偏移量,在 for 循环开始处获得时间戳,循环结束时再获得时间戳,相减后就是循环执行的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值