Python基础(七),, 目录
Python基础(七),, 目录
目录
1 模块函数 1.1 模块函数 1.2 导入 1.2.1 import moudle 1.2.2 import module as alias 1.2.3 from module import function 1.2.4 from module import function as alias 2 自定义函数 2.1 定义函数 2.2 设置docstring 2.3 函数调用 2.4 返回值 2.5 形参 2.5.1 形参分类 2.5.2 * 与 ** 2.5.3 命名关键字参数 2.6 实参 2.6.1 位置参数 2.6.2 关键字参数 2.7 变量可见性 2.7.1 局部变量 2.7.2 全局变量 2.7.3 非局部变量 2.8 参数传递规则 2.8.1 值传递 2.8.2 地址传递 2.9 lambda函数 2.9.1 定义 2.9.2 调用1 模块函数
1.1 模块函数
模块函数指的是模块中的函数,模块函数有三种:
内置模块:又叫标准库.第三方开源模块:可以通过包管理工具进行安装.自定义模块.1.2 导入
导入方法主要有三种:
1.2.1 import moudle
import mathmath.e
1.2.2 import module as alias
alias表示别名.
1.2.3 from module import function
从模块导入函数.
1.2.4 from module import function as alias
与上一种类似,加上了别名.
2 自定义函数
2.1 定义函数
使用关键字def定义:
def func(): print(1)
2.2 设置docstring
docstring就是注释,描述了函数的功能,使用三个单引号或三个双引号,可以用help()获取函数的docstring.
def func(): ''' func docstring ''' print(1)help(func)
2.3 函数调用
直接使用函数名即可,需要的话要加上参数.
func()func(22)
2.4 返回值
返回值在return里指定,可以返回多个值:
def f(): return 1,2,3,4
相当于返回一个元组.若函数没有return,则返回None.
2.5 形参
2.5.1 形参分类
形参就是函数定义时的参数列表里面的参数,可以分为:
可选形参:给出默认值的形参.必选形参:没有给出默认的形参.def f(x1,x2,x3=3)
其中x1,x2必选形参,x3可选形参.
2.5.2 * 与 **
带一个 * 的形参表示该形参类型为元组,带两个 * 的形参表示该参数类型为字典.
2.5.3 命名关键字参数
出现在*后的参数.
def f(x1,*x2,x3,x4)
x3与x4就是命名关键字参数,在调用时必须显式使用参数名.
2.6 实参
python实参可以分为位置实参与关键字实参.
2.6.1 位置参数
位置参数就是没有指定形参名字的实参,每个实参基于顺序关联到一个形参.
2.6.2 关键字参数
关键字参数就是指定了形参名字的实参,用键值对的形式指定,可以不按顺序调用.
def f(x1,x2,x3): print(x1,x2,x3)f(1,2,3)f(x3=999,x1=888,x2=999999)
2.7 变量可见性
python变量的可见性有三种:全局变量,局部变量,非局部变量.
2.7.1 局部变量
在函数内的变量为局部变量,因此,以下代码会输出9:
x1 = 8def f(): x1 = 9 print(x1)f()
如果在x1之前输出呢?
直接提示没有定义x1,就是全局变量x1在函数内不可见,但笔者不死心,一定要运行一下.
它说局部变量x1没有被赋值,注意,是局部变量,因此,这也证明了全局变量在函数内不可见.
2.7.2 全局变量
若要使全局变量在函数内可见,使用global:
x1 = 8def f(): global x1 print(x1) x1 = 9 print(x1)f()
global x1表示x1是一个全局变量,注意global x1需要单独占一行.
2.7.3 非局部变量
用于嵌套函数中,使用nonlocal声明,表示内层函数的这个变量是外层函数的.
x1 = 8def f(): x1 = 9 print(x1) def f1(): nonlocal x1 print(x1) x1 = 10 print(x1) return f1f()f()()
第一个与第二个9都是f()中的print()输出的,第三个9是f1()中的print()输出的.
2.8 参数传递规则
当实参传递给形参时,有两种传递规则,一是值传递,而是地址传递.
2.8.1 值传递
当实参为不可变对象时,采用值传递规则,常见的不可变对象类型包括int,float,str,bool,tuple.
def f(x): x = 1 print(x)x = 3print('-------int------')f(x)print(x)print()x = 'string'print('-------str------')f(x)print(x)print()x = (3,4,5)print('-------tuple------')f(x)print(x)print()x = 5.799print('-------float------')f(x)print(x)print()
2.8.2 地址传递
参数为可变对象时,采用地址传递规则,修改形参的值会同时改变实参的值.常见的可变对象类型包括list,set,dict.
def f(x): if type(x) == list: x = x.reverse() elif isinstance(x,set): x.add(8) else: x['0'] = 3x = [1,2,3]print('-------list------')print(x)f(x)print(x)print()x = {4,5,6}print('-------set------')print(x)f(x)print(x)print()x = {'a':1,'b':2}print('-------dict------')print(x)f(x)print(x)print()
2.9 lambda函数
lambda是一种特殊的自定义函数,使用关键字lambda进行定义,是一种匿名函数,函数体一般很短.
2.9.1 定义
以关键字lambda开头,后面是参数列表,参数列表结束后加一个冒号,后面是返回值.
y = lambda x:x*3z = lambda x,y:x*y
2.9.2 调用
调用可以通过"函数名"调用,或者配合其他函数使用.
Python基础(七)
评论关闭