您好,登錄后才能下訂單哦!
小編給大家分享一下設置python默認參數的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
我們知道,在調用函數時,如果不指定某個參數,解釋器會拋出異常。為了解決這個問題,Python允許為參數設置默認值,即在定義函數時,直接給形式參數指定一個默認值,這樣的話,即便調用函數時沒有給擁有默認值的形參傳遞參數,該參數可以直接使用定義函數時設置的默認值。
定義帶有默認值參數的函數,其語法格式如下:
def 函數名(...,形參名=默認值): 代碼塊
注意,在使用此格式定義函數時,指定有默認值的形式參數必須在所有沒默認值參數的最后,否則會產生語法錯誤。
例如,如下程序為 name、message 形參指定了默認值:
# 為兩個參數指定默認值 def say_hi(name = "孫悟空", message = "歡迎來到python學習網"): print(name, ", 您好") print("消息是:", message) # 全部使用默認參數 say_hi() # 只有message參數使用默認值 say_hi("白骨精") # 兩個參數都不使用默認值 say_hi("白骨精", "歡迎學習Python") # 只有name參數使用默認值 say_hi(message = "歡迎學習Python")
運行結果為
孫悟空 , 您好 消息是: 歡迎來到python學習網 白骨精 , 您好 消息是: 歡迎來到python學習網 白骨精 , 您好 消息是: 歡迎學習Python 孫悟空 , 您好 消息是: 歡迎學習Python
從上面程序可以看出,如果只傳入一個位置參數,由于該參數位于第一位,系統會將該參數值傳給 name 參數。因此,不能按如下方式調用 say_hi() 函數:
say_hi("歡迎學習Python")
上面調用時傳入的“歡迎學習Python”字符串將傳給 name 參數,而不是 message 參數。
更不能按如下方式來調用 say_hi() 函數:
say_hi(name="白骨精", "歡迎學習Python")
因為 Python 規定,關鍵字參數必須位于位置參數的后面。因此提示錯誤:positional argument follows keyword argument。
那么,能不能單純地將上面兩個參數交換位置呢?
say_hi("歡迎學習Python" , name="白骨精")
上面調用依然是錯誤的,因為第一個字符串沒有指定關鍵字參數,因此將使用位置參數為 name 參數傳入參數值,第二個參數使用關鍵字參數的形式再次為 name 參數傳入參數值,這意味著兩個參數值其實都會傳給 name 參數,程序為 name 參數傳入了多個參數值。因此提示錯誤:say_hi() got multiple values for argument 'name'。
將函數調用改為如下兩種形式是正確的:
say_hi("白骨精", message="歡迎學習Python") say_hi(name="白骨精", message="歡迎學習Python")
上面第一行代碼先使用位置參數為 name 參數傳入參數值,再使用關鍵字參數為 message 參數傳入參數值;第二行代碼中的 name、message 參數都使用關鍵字參數傳入參數值。
再次強調,由于 Python 要求在調用函數時關鍵字參數必須位于位置參數的后面,因此在定義函數時指定了默認值的參數(關鍵字參數)必須在沒有默認值的參數之后。例如如下代碼:
# 定義一個打印三角形的函數,有默認值的參數必須放在后面 def printTriangle(char, height = 5) : for i in range(1, height + 1) : # 先打印一排空格 for j in range(height - i) : print(' ', end = '') # 再打印一排特殊字符 for j in range(2 * i - 1) : print(char, end = '') print() printTriangle('@', 6) printTriangle('#', height=7) printTriangle(char = '*')
上面程序定義了 printTriangle() 函數,其中,有默認值的 height 形參,必須放在 char 形參的后面;反之,將會造成語法錯誤。
在 Python 中,可以使用“函數名.__defaults__”查看函數的默認值參數的當前值,其返回值是一個元組。例如,顯示上面定義的 printTriangle 函數的默認值參數的當前值,可以使用 printTriangle.__defaults__ ,其結果為 (5,)。
以上是設置python默認參數的方法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。