1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行。如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个return中有多个返回值,会将所有对象封装成一个元组返回。
2.定义函数时的参数叫作形参,形参只在被调用时分配内存单元,调用结束后即释放内存;调用函数时传入的参数叫作实参,实参可以是常量、变量、表达式、函数等。未在函数定义时指定默认值的形参,必须在调用时指定值。
3.位置参数即函数调用时传入的参数与定义的位置和值一一对应,关键字参数即在函数调用时通过参数=值指定各个参数的值,此时与位置无关,例如定义函数def test(x,y,z)
位置参数:通过test(1,2,3)调用,则参数1、2、3与x、y、z一一对应
关键字参数:通过test(y=2,z=3,x=1)调用,此时需指定每个参数的值,个数要与定义时一致但是位置可随意
位置参数和关键字参数混合使用:位置参数需在关键字参数前面,关键字参数按顺序赋值,例如test(1,2,z=3),但是test(x=1,2,3)、test(1,2,y=3)会报错
默认参数:如果函数定义时指定一个默认值def test(x,y,z=2),调用时可不指定z的值也可指定,指定则会覆盖默认值2,如通过def test(1,2)或者test(1,2,3)调用
4.*args和**kwargs,不定长参数,一个函数如果同时有*args和**kwargs参数,*args参数必须在**kwargs前面,并且如果有默认参数,默认参数一定要放在最前面
*args是将函数调用时多余传入的、没有关键字的参数收纳在一起形成一个元组赋值给形参,或者通过*[各元素]、*(各元素),将列表、元组中的各个元素分开赋值给形参
**kwargs是将多余传入的、有关键字的参数收纳在一起形成一个字典赋值给形参,或者通过**{各元素}将字典中的各个元素分开赋值给形参
5.global 变量名:表示全局变量,nonlocal 变量名:表示上一级变量
全局变量如果要在局部被修改,必须要加global指定是全局变量,否则不能被修改
6.嵌套函数的执行顺序