函数:
作用:代码重用性,数据一致性,可移植和扩展。
在python3.x中 过程和函数都是 def 函数名(形参): 如此定义,而区别是函数有return 返回值,而过程没有,但是默认返回None,return 可以返回多个值,用逗号隔开(实际上是一个元组),return 还有结束函数运行的作用。
函数调用:先定义函数,对应传参才能调用(一般定义的形参个数必须大于等于传入的实参个数,因为可能会有默认参数,参数组会除外,即是 *args(元组),**kwargs(字典)),传参有位置传参和关键字传参,
参数组:主要用于不确定实参传入个数时,或是直接想传入元组或是字典。
默认参数:形参位置有默认值,不传此位置的参数,会根据默认值计算,否则按传入的计算
例: def test(x,y,z):
‘‘‘ 一般这里写注释‘‘‘
print(x,‘---‘,y,‘---‘,z)
return ‘test----‘
位置传参调用: test(2,4,5)->一一对应x,y,z
关键字传参:test(y=2,x=4,z=8),找到对应的形参名并赋值
当混用二者时,位置传参在前面(必须对应传参才能调用) 如: test(2,z=6,y=3)
*args 如:
def test1(x,*args):
print(x,‘---‘,args)
return ‘test1----‘
可test1(2,4,5,6)->x=2 args:(2,4,6); 即是把多余的位置传参变成元组
还可test1(2)->x=2,args:(),不传为默认空元组,test1(x=3,*[2])->x=3,args:(3,);test1(6,*(2,5))->x=6,args:(2,5)
**kwargs 如:
def test3(x,y=6,**kwargs):
print(x,‘---‘,y,‘---‘,kwargs)
return ‘222‘
test3(6,name=‘ddd‘,kk=‘gg‘)->x=6,y默认为6,kwargs位{‘name’:‘dd‘,‘kk‘:‘gg‘},即是把对应多的关键字传参变成key=>value对应的字典,注意:需要传入字典的key最好不要和其它形参相同名,不然会报多传的错误的。
test3(y=3,x=5,mm=‘fff‘)->x=5,y=3,kwargs:{‘mm‘:‘fff‘};test3(7,1)->x=7,y=1,kwargs:{};test3(x=3,3,**{‘name‘:‘55‘})->x=3,y=3,kwargs:{‘name‘:‘55‘}
3.x 全局变量及局部变量:
全局变量:一般在程序顶级定义的变量就是全局变量,而在子程序(一般是函数)里定义的变量一般是局部变量,如果同名,在局部作用域里局部变量起作用,反之亦然。
当全局变量是比较复杂的类型(一般是列表,字典,集合)时,在函数中是可以直接修改了全局变量
当全局变量是单一类型(字符,数字等)时,在函数中可用 global 重新定义全局变量名 就可修改(一般不建议如此,因为可能不知道函数被调用几次)
在函数内可定义全局变量(直接 global 变量名),一般不建议如此。