使用這個腳本:分配默認參數值
color = 'blue'
def say_color(color):
print 'The color is: ' + color
say_color()
在這裏,我試圖讓say_color
而不傳遞一個參數進行處理,並將結果作爲默認的顏色(藍色)。但是,如果指定了顏色,則不會使用藍色,而是使用給定的字符串。
這是如何完成的?
使用這個腳本:分配默認參數值
color = 'blue'
def say_color(color):
print 'The color is: ' + color
say_color()
在這裏,我試圖讓say_color
而不傳遞一個參數進行處理,並將結果作爲默認的顏色(藍色)。但是,如果指定了顏色,則不會使用藍色,而是使用給定的字符串。
這是如何完成的?
def say_color(color='blue'):
print 'The color is: ' + color
say_color()
default_color = 'blue'
def say_color(color=default_color):
print 'The color is: ' + color
則:
say_color() # default_color is used
say_color('red')
產量:
The color is: blue
The color is: red
如果不指定您呼叫color
,該default_color
會在你say_color
使用功能。如果你做在呼叫中指定一個color
,那麼它將覆蓋你的默認值。
附錄:有關如何以及何時將這些值分配/綁定的更多技術性說明/背景,請參閱下面的@HughBothwell(謝謝!)的信息性評論。
用這種方式書寫可能會引起誤解。當say_color被定義爲*時,'color'被綁定到'default_color' *的值。稍後將default_color設置爲不同的值將不會更改該函數的默認顏色... *除非* default_color引用了可變對象(列表,字典,類等),在這種情況下,對象內容的更改**可傳播到該功能可能是意想不到的和令人困惑的。 –
@ user1417933只是一個友好的筆記,如果這些答案中的任何一個提供解決您的問題,請考慮接受一個 - 謝謝。 – Levon