武道之路-炼体期五重天

函数:

作用:代码重用性,数据一致性,可移植和扩展。

在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 变量名),一般不建议如此。

 

posted @ 2018-02-06 09:53  孤月灵声  阅读(152)  评论(0编辑  收藏  举报