python 函数参数定义规范

def func(a,b,*args, x=1,**kwargs):

    print(a,b,args,defualt,kwargs)

      #a,b为位置参数,*args为动态参数中的位置参数,可以为任意多个,组成一个元祖。

     #x为默认参数 ,**kwargs为动态参数中的默认参数,可以为任意多个,组成一个字典

     #顺序:位置参数,*args,默认参数,**kwargs  ,顺序不可改变。

   

 

假设需要传递一个列表,而我们现在不修改func这个函数的内容,只需要在传实参的时候加上一个*即可。

举例:

定义一个funx

def func(*arg):
    print(*arg)


list = [1,2,3,4,5]

func(list)    #打印 [1, 2, 3, 4, 5] ,因为传递进去的是一个列表

func(*list)  #打印 1 2 3 4 5] ,因为传递进去的是五个参数

 

 

def func(**arg): 
    print(arg)  #{"x":1, "y":2}


dict = {"x":1, "y":2}

func(**dict)  #组合起来的参数分开传递进去

这个方式即把list整个列表/字典的所有元素当做*args/**kwargs传递了进去。

关于*,站在形式参数的角度上 *相当于把各个参数组合在一起,在实参的角度上是把组合起来的参数依序分开传递。

 

函数的注释:

在def下方添加注释块

'''

这个函数实现了XX功能

参数1:……

参数2:……

return值的含义......

'''

def test(a,b = {}):
    b[a] = '1'
    print(l)

test(1)     #{1: '1'}
test(2)     #{1: '1', 2: '1'}
test(3)     #{1: '1', 2: '1', 3: '1'}

# 如果默认参数的值是一个可变数据类型,
# 那么每一次调用函数的时候,
# 如果不传值就公用这个数据类型的资源
 

posted @ 2018-12-13 14:46  不会玩python  阅读(9)  评论(0编辑  收藏  举报