python自动化运维学习第八天--函数的多类型传值和冗余参数

函数的多类型传值和冗余参数

多类型传值

先上例子:

def fun(x, y, z):
    return x + y + z
    
t = (1, 2, 3)        #定义一个元组
fun(*t)              #把元组作为函数的参数,不加*号会报错
#执行后的结果为
>>> 6
t1 = (4, 5)      #定义一个元组
fun(6,*t1)       #元组作为参数的一部分,这两个参数不能颠倒顺序,即不能fun(*t1, 6)调用
#执行后的结果为
>>> 15
dic1 = {'x':1, 'z':3, 'y':2}    #定义一个字典
fun(**dic1)      #字典作为参数传给函数,需要在字典名前加两个*,需要注意,字典中的key必须和函数中的形参名相同
#执行后的结果为
>>> 6
冗余参数

处理多余参数(接收多余参数)
def func(x,*args,**kwargs):
定义了x命名参数,和两个多类型参数,作为冗余参数,*args接受的参数放到元组中,**kwargs接受的字典或者默认参数放到了字典中
默认情况下至少传递一个命名参数,如果传的参数多的话,则存到args中(以元组的形式),如果传递的是字典,或者变量的默认(例x=1)值等(以字典的形式存储)

def func(x,*args,**kwargs):
  print x
  print args
  print kwargs
func(1,2,'b',a=123)
(2,'b')
{'a': 123}

函数的递归调用

递归调用就是在函数内部调用函数自己,通常用它来计算阶乘,累加等
注意:

  • 必须有最后的默认结果
    if n ==0
  • 递归参数必须向默认结果收敛
    factorial(n-1)
例子:

求10的阶乘

#!/usr/bin/python
def factorial(n):
    if n == 0:     # 最后的默认结果
        return 1
    else:
        return n * factorial(n-1)  # n-1 实现参数收敛
print factorial(10)

求100的累加

#!/usr/bin/python
def factorial(n):
    if n == 0:     # 最后的默认结果
        return 0
    else:   
        return n + factorial(n-1)   # n-1 实现参数收敛
print factorial(100)

猜你喜欢

转载自blog.csdn.net/wang035759984/article/details/84594055
今日推荐