2012-05-26 55 views
3

使用這個腳本:分配默認參數值

color = 'blue' 

def say_color(color): 
    print 'The color is: ' + color 

say_color() 

在這裏,我試圖讓say_color而不傳遞一個參數進行處理,並將結果作爲默認的顏色(藍色)。但是,如果指定了顏色,則不會使用藍色,而是使用給定的字符串。

這是如何完成的?

回答

9
def say_color(color='blue'): 
    print 'The color is: ' + color 

say_color() 
6
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(謝謝!)的信息性評論。

+3

用這種方式書寫可能會引起誤解。當say_color被定義爲*時,'color'被綁定到'default_color' *的值。稍後將default_color設置爲不同的值將不會更改該函數的默認顏色... *除非* default_color引用了可變對象(列表,字典,類等),在這種情況下,對象內容的更改**可傳播到該功能可能是意想不到的和令人困惑的。 –

+0

@ user1417933只是一個友好的筆記,如果這些答案中的任何一個提供解決您的問題,請考慮接受一個 - 謝謝。 – Levon