程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

函數的參數-Python

編輯:Python

定義函數的時候,我們把參數的名字和位置確定下來,函數的接口定義就完成了。對於函數的調用者來說,只需要知道如何傳遞正確的參數,以及函數將返回什麼樣的值就夠了,函數內部的復雜邏輯被封裝起來,調用者無需了解。

Python的函數定義非常簡單,但靈活度卻非常大。除了正常定義的必選參數外,還可以使用默認參數、可變參數和關鍵字參數,使得函數定義出來的接口,不但能處理復雜的參數,還可以簡化調用者的代碼。

位置參數

我們先寫一個計算x2的函數:

def power(x):
    return x * x

對於power(x)函數,參數x就是一個位置參數。

當我們調用power函數時,必須傳入有且僅有的一個參數x

>>> power(5)25>>> power(15)225

現在,如果我們要計算x3怎麼辦?可以再定義一個power3函數,但是如果要計算x4、x5……怎麼辦?我們不可能定義無限多個函數。

你也許想到了,可以把power(x)修改為power(x, n),用來計算xn,說干就干:

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x    return s

對於這個修改後的power(x, n)函數,可以計算任意n次方:

>>> power(5, 2)
25
>>> power(5, 3)
125

修改後的power(x, n)函數有兩個參數:xn,這兩個參數都是位置參數,調用函數時,傳入的兩個值按照位置順序依次賦給參數xn

默認參數

新的power(x, n)函數定義沒有問題,但是,舊的調用代碼失敗了,原因是我們增加了一個參數,導致舊的代碼因為缺少一個參數而無法正常調用:

>>> power(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>TypeError: power() missing 1 required positional argument: 'n'

Python的錯誤信息很明確:調用函數power()缺少了一個位置參數n

這個時候,默認參數就排上用場了。由於我們經常計算x2,所以,完全可以把第二個參數n的默認值設定為2:

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x    return s

這樣,當我們調用power(5)時,相當於調用power(5, 2)

>>> power(5)
25
>>> power(5, 2)
25

而對於n > 2的其他情況,就必須明確地傳入n,比如power(5, 3)

從上面的例子可以看出,默認參數可以簡化函數的調用。設置默認參數時,有幾點要注意:

一是必選參數在前,默認參數在後,否則Python的解釋器會報錯(思考一下為什麼默認參數不能放在必選參數前面);

二是如何設置默認參數。

當函數有多個參數時,把變化大的參數放前面,變化小的參數放後面。變化小的參數就可以作為默認參數。

使用默認參數有什麼好處?最大的好處是能降低調用函數的難度。

舉個例子,我們寫個一年級小學生注冊的函數,需要傳入namegender兩個參數:<


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved