1. Python函数参数
1. 位置参数
调用时根据定义参数的顺序传参,如下例:
def fun(a, b):
return a-b
fun(1, 2) # 结果为 1-2 = -1
2. 默认参数
定义函数时写入默认参数,即便不传参也不会显示错误,如下例:
def function (param = 0)
return param
规范: 将默认的、变化不大的写在后面,变化大的参数写在前面
3. 可更改与不可更改参数
所有的变量都可以理解是内存中一个对象的“引用”,而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象,看下例:
a = 1
def fun(a):
a = 2
print a # 结果为1,不会随函数调用而更改
a = []
def fun(a):
a.append(1)
print a # 结果为[1],随函数调用而更改
4. 可变参数
可变参数在函数调用时自动组装成tuple,直接上栗子:
定义:
def fun(*args):
pass
调用方法一:
fun(1,2,3)
调用方法二:
params = [1,2,3]
fun(*params)
5. 关键字参数
关键字参数在函数调用时自动组装成dict, 可不传,也可传入任意个数的关键字参数(必须传入参数名),上栗子:
定义:
def fun(**kwargs):
return kw
调用方法一:
fun(city = 'Beijing') # 返回{'city':'Beijing'}
调用方法二:
fun(gender ='M', job = 'Coder') # 返回{'gender':'M', 'job':'Coder'}
备注:当传入一个dict时,函数内部对其修改不会影响函数外的dict
6. 命名关键字参数
限制了传入的关键字参数,只接受固定名称参数传入,如下:
def fun(paraA, paraB, *, keyParaA, keyParaB):
pass
则只有key为keyParaA和keyParaB的关键字函数可以传入。
7. *args and **kwargs
当不确定函数里将要传递多少参数时你可以用*args,相似的,**kwargs允许使用没有事先定义的参数名;</