Python学习-20180104

一、多类型传值和冗余参数

多类型传值:

一般情况下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))

猜你喜欢

转载自my.oschina.net/u/3755326/blog/1602621