一、多类型传值和冗余参数
多类型传值:
一般情况下python函数形参和实参的数量要一致。但是当实参为序列数据类型时,我们可以将多个实参传递到形参中。 我们可以在实参列表中以 * 或者 ** 标识符来限制传入的实参必须为 Tuple/List 或 Dict 的类型对象。
def fun(x,y): print(x+y)
当我们调用fun函数时,只用传入x和y两个值就可以了,但当我们想传入一个元组时t=(1,2)。这样fun(t)调用时不行的,我们需要使用*t来进行传值。但元组t中的元素个数要小于函数中定义的形参。
示例:
元组:
t = (1,2) def fun(x,y,z): print(x+y+z) fun(1,*t)
字典:
d = {'x':1,'y':2,'z':3} def fun(x,y,z): print(x+y+z) fun(**d)
冗余参数:
向函数传元组和字典时如果传的参数多的话,可以通过以下方法来处理多余参数。
def fun(x,y,*args,**kwargs)
def fun(x,*args,**kwargs): print(x) print(args) print(kwargs) fun(1,2,a=123)
二、函数递归
函数递归:就是在函数内部调用自己。一般情况下来计算阶层。
递归必须有一个默认结果 if == 0 (避免死循环)
递归参数必须默认结果收敛: factoria(n-1)
示例:
使用递归来计算5的阶层:
def factoria(n): if n == 0: return 1 else: return n * factoria(n-1) print(factoria(5))