1.函数参数定义中使用独立的*符号:
在函数定义时,使用了一个独立的*符号,这表示在*符号后面的参数,调用函数时,必须使用key=value的形式进行参数传递。在Python的标准库中,有不少模块的接口函数的定义都在使用这种方式。
比如:
def a(a,*,b): print(a,b)
如果我们这样调用a(1,2)就会报错,正确的调用方式是a(1,b=2)
2.tuple参数(*args)
我们在设计函数参数的时候,如果使用一个*符号后跟字母,表示这是一个tuple参数,tuple内数据的个数,就不限制了。
*args参数在函数内部,是一个tuple类型的对象,使用时要去掉前面的*符号,直接使用args。在调用函数时,看不出来这是一个tuple,调用时并无特别之处,只是参数的数量不确定,可以很多,注意哦,也可以没有参数。
实现不限参数个数的函数接口,一般都使用这种方式,tuple对象内的各数据类型应该保持一致,如果不一致,大概率这不是一个好的设计,因为对各数据的处理方式会不一样。
比如:
def b(*a): print(a) b(1) b(1,2)
3.dict参数(**kwargs)
设计函数参数时,如果使用两个**符号后跟字母,表示这个参数是一个dict对象。这种方式也可实现函数参数的个数不限。
采用**kwargs参数,函数调用时,要写成key=value的形式。同样的,这种方式也兼容没有参数输入。
使用这种方式的dict参数,函数内部可能需要预先知道有哪些key值可以使用,或者就是直接遍历所有的key和value。
def b(**a): print(a) b(a=1) b(a=1,b=2)
下一篇: requests请求如何添加cookies
上一篇:如何快速掌握一门编程语言
评论