python 函数参数定义有四类:
1,必选参数:调用函数时候必须赋值的参数。
a,须以正确的顺序传入函数
b,调用时的数量必须和声明时的一样 def exa(x):
return x
#b作为参数进入函数体内
b=1
print exa(b) #1
print exa()
#错误 TypeError: exa() takes exactly 1 argument (0 given)
2,默认参数:初始已经有值,在调用时未更改使用默认值。 def exa(x=1)
return x
print exa() # 1
print exa(2) # 2
3,不定长参数:不确定参数个数,会分配给带“*”参数 def exa(*x)
return x
print exa(1,2,3,4,5,6,6)
# (1,2,3,4,5,6,6)
4,关键字参数:使用关键字参数来确定传入的参数值。调用函数时带关键字后,顺序不影响。 def exa(x,y,z):
return x,y,z
print exa(y=2,x=3,z=2) #(3, 2, 2)
tips 定义时参数带*符号的两种形式与含义 *x
#不定长的元组参数,参数格式化存储在一个元组中,长度没有限制。
#必须位于普通参数和默认参数之后。
def exa(*x):
return x
print exa('ai', 'ni', 'ya')
#('ai', 'ni', 'ya')
**x
#不定长的字典参数
#必须位于参数列表的最后面。
def exa(**x):
return x
print exa(ai="爱",ni="你")
#{'ai': '爱', 'ni': '你'}
python3中,不定长元组参数可以在默认参数前,谁在前谁优先拿到值。但python2中 NO! def exa(*x,y=1):
return y,x
print (exa(2,1,3,4))
# (1, (2, 1, 3, 4))
def exa(y=1,*x):
return y,x
print (exa(2,1,3,4))
#(2, (1, 3, 4))