Python函數

Python函數

參數

  • 必選參數
  • 默認參數
  • 可變參數
  • 關鍵字參數
  • 命名關鍵字參數

必選參數

必選參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣
例:

def fun(x,n):
    s = 1
    while n>0:
        n = n-1
        s = s*x
    return s
print(fun(3,4))

輸出結果:

81

默認參數

默認參數可以簡化函數的調用

  • 必選參數在前,默認參數在後
  • 可以不按順序提供部分默認參數。當不按順序提供部分默認參數時,需要把參數名寫上
  • 默認參數必須指向不變對象

例:

def fun(x,n=2):
    s = 1
    while n>0:
        n = n-1
        s = s*x
    return s
print(func(5))

輸出結果:

25

思考:爲什麼默認參數不能放在必選參數前面?

可變參數

  • 可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝爲一個tuple
    例:
def func(*number):
    sum = 0
    for num in number:
        sum += num
    return sum

print(func(2,3,5))

輸出結果:

10
  • 當存在一個listtuple時,需要調用一個可變參數時可以這樣做:
nums = [1,2,3,4]
func(*nums)

關鍵字參數

  • 關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict
  • 函數的調用者可以傳入任意不受限制的關鍵字參數

命名關鍵字參數

  • 要限制關鍵字參數的名字,就可以用命名關鍵字參數
  • 命名關鍵字參數需要一個特殊分隔符**後面的參數被視爲命名關鍵字參數
    例:
def person(name, age, *, city, job):
    print(name, age, city, job)


  • 命名關鍵字參數可以有缺省值

特別注意:
如果沒有可變參數,就必須加一個作爲特殊分隔符。如果缺少,Python解釋器將無法識別位置參數和命名關鍵字參數

參數組合

  • 可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用
  • 參數定義的順序必須是:必選參數默認參數可變參數命名關鍵字參數關鍵字參數

雖然可以組合多達5種參數,但不要同時使用太多的組合,否則函數接口的可理解性很差。

小結

  • 默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤
  • 要注意定義可變參數和關鍵字參數的語法
  • *args是可變參數,args接收的是一個tuple
  • **kw是關鍵字參數,kw接收的是一個dict
  • 命名的關鍵字參數是爲了限制調用者可以傳入的參數名,同時可以提供默認值
  • 定義命名的關鍵字參數在沒有可變參數的情況下不要忘了寫分隔符*,否則定義的將是位置參數
  • 使用*args**kwPython的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章