Python 学习 - 函数
1.创建和调用函数
创建函数
def function_name(): #无参数函数
xxx
def function_name(par1, par2, ...): #带参数函数
xxx
记住三个关键的东西:def, (), :
调用
function_name() #无参数函数调用
function_name(arg1, arg2, ...) #带参数函数调用
直接写出函数名加 () 即可。
返回值
(1)使用关键字 return
(2)当函数中没有使用return关键字写返回值时,默认是
return None
(3)Python的函数返回值没有类型指定问题,同时还能使用列表和元组返回多个返回值。
深入了解函数的参数
(1) 参数分为形式参数和实际参数
在函数定义的时候给函数的参数为形式参数,如上面的par1, par2
在函数调用的时候给函数的参数为实际参数,如上面的arg1, arg2
(2) 一类特殊的参数——关键字参数
关键字参数就是在传入参数的时候指定形式参数的变量名。
如
function_name(par1=arg1, par2 = arg2)
(3) 默认参数
在函数 定义的时候 给形式参数的默认值,调用的时候不传递参数表示使用默认值。默认参数必须放在参数列表的最后,否则会报错。
定义: def function_name(par1 = default1, par2=default2):
xxx
调用:function_name() #实际上有实参,实参为定义时候的默认值
>>> def paraerr(heigth = 180, weigth):
print(heigth)
SyntaxError: non-default argument follows default argument
(4)收集参数
在定义带参数但是不知道需要多少个参数的时候可以使用收集参数。收集参数将所有的参数打包成一个元组。
定义时在参数前加 * ,如:
def test(*par)
要在收集参数后面可以添加其他参数,如
def test2(*par,par1)
但是在调用的时候应该使用关键参数的传递方式,如
test2(arg1,par1 = arg2)
为了避免错误,可以使用默认参是在函数定义的时候就给非收集参数赋予一个默认参数。
收集参数的另一个使用方式:
当传入的参数是一个列表或者元组时,实际传入函数的只有一个参数。一个列表或者元组就是一个参数,但是当我们想再函数体里面使用列表或者元组的每一个元素时,可以使用以下的传入方式:
>>>a = (1,2,3,4,5,6,7)
>>>test(*a)
函数的文档
2. 函数变量的作用域
(1)在函数中使用的变量都是局部变量,外部无法访问。在执行完函数后,与该函数有关的所有数据都会自动删除。
(2)在函数外面使用的变量都是全局变量
注意:在函数里面是可以访问全局变量的。但是并不能改变全局变量,当要改变全局变量的值时,Python自动创建于这个全局变量相同的局部变量去接受这个改变。
当非要在函数内修改全局变量时,可以在函数内使用关键字 global 做出声明即可。
如:
>>> A = 1
>>>def fun():
global A
A = 10
print(A)
>>> fun()
10
3. 内嵌函数和闭包
(1) 内嵌函数指的是一个函数内部定义里其他的函数。
特别需要注意作用域。
(2) 闭包
一个函数内对外部作用域的变量进行了引用,这个内部函数就是闭包的。
内部函数对外部函数的局部变量经行修改可以通过关键字 nonlocal
4. lambda表达式
书写格式:lambda 后先写参数,通过一个冒号与后面的表达式隔开。
aname = lambda par1, par2,... : 表达式
lambda表达式的调用:
aname(par1,par2,...)
en