python自動化運維學習第八天--函式的多型別傳值和冗餘引數
阿新 • • 發佈:2018-12-04
函式的多型別傳值和冗餘引數
多型別傳值
先上例子:
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)