python函数参数学习笔记
python的函数调用一般都需要传递参数,创建一个自定义函数也需要设置参数,python的参数分为4种类型:
必选参数、默认参数、可变参数以及关键字参数
必选参数
定义一个函数:
def fun(x):
return x * x
这里的x就是必选函数,同时也可以称之为位置参数,在调用函数fun时,有且仅能传递x参数,如果传递的参数数量不正确,会抛出Typeerror错误:fun() missing 1 required positional argument
多个必选参数时:
def fun(x,y):
return x + y
…
默认参数
定义一个函数:
def fun(x=None):
return x * x
这里的x=None就是默认参数,调用该函数时,可以不传递参数x的值,同时也可以通过fun(x=XXX)来进行调用,如果不传递x参数的值,使用该函数时x的值会默认为None
ps:默认参数最好设置为一个不可变的值,例如None,如果设置一个可变值,该参数在重复调用过程中默认值会被刷新;
例如:def fun(x=[]):
return x.append(‘1’)
第一次调用:fun() x值会变为[‘1’,]
第二次调用:fun() x值会变为[‘1’,‘1’,]
…
可变参数
可变参数—顾名思意,传递的参数数量是可以变化的,可以传递任意数量的参数,每一个参数都会指向该参数名称;
例如:
def fun(*x):
sum = 0
for i in x:
sum += i
return sum
这里的*x就是一个可变参数,我们调用时,可以使用fun(1,2,3,4,5,6)这种调用方式
------也可以组装一个list或tuple
a = [1,2,3,4,5,6,7]
然后使用fun(*a)来进行调用
关键字参数
例如 一个函数:
def fun(**kw):
print ('args:'kw)
调用这个函数时,可以使用:fun(city=‘beijing’,name=‘wowo’)
函数输出:‘args :’{‘city’=‘beijing’,‘name’:‘wowo’}
也可以使用
args = {‘city’:‘beijing’,‘name’:‘wowo’}
fun(**args)来进行调用
在传递关键字参数时,可以传递任意数量的关键字,且,需要调用时必须通过kw参数来进行获取;
如果要限制关键字参数的名字,可以用命名关键字参数,例如假设只接收city和job参数:
def fun(,city,job):
…
命名关键字:定义函数时由号分割,号后面的函数都会被默认为命名关键字函数,必须输入参数名和值才能进行调用
ps如果已经设置了可变参数,设置命名关键字参数不需要加一个号:def fun(*arg,city,name) city和name参数就是命名关键字参数
参数组合
python中定义函数可以使用组合参数,顺序依次为:必选参数、默认参数、可变参数、命名关键字参数和关键字参数;