2012-05-26 49 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