1. 程式人生 > >python自動化運維學習第八天--函式的多型別傳值和冗餘引數

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)