分配默认参数值

use*_*933 3 python

使用此脚本:

color = 'blue'

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

say_color()
Run Code Online (Sandbox Code Playgroud)

在这里,我试图允许say_color在不传递参数的情况下进行处理,结果是默认颜色(蓝色).但是,如果指定了颜色,则不会使用蓝色并使用给定的字符串.

这是怎么做到的?

Rob*_*bus 9

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

say_color()
Run Code Online (Sandbox Code Playgroud)


Lev*_*von 6

default_color = 'blue'

def say_color(color=default_color):
    print 'The color is: ' + color
Run Code Online (Sandbox Code Playgroud)

然后:

say_color()  # default_color is used
say_color('red')
Run Code Online (Sandbox Code Playgroud)

收益率:

The color is: blue
The color is: red
Run Code Online (Sandbox Code Playgroud)

如果您color在通话中指定,default_color则将在您的say_color功能中使用.如果您确实color在通话中指定了a ,那么它将覆盖您的默认值.

附录:有关如何以及何时分配/约束这些值的更多技术解释/背景,请参阅下面的@HughBothwell(谢谢!)的内容.

  • 用这种方式写它可能会产生误导.`color`在定义say_color时被绑定到`default_color`*的值.稍后将default_color设置为不同的值将不会更改函数的默认颜色...*除非*default_color引用可变对象(list,dict,class等),在这种情况下,对象内容的更改**可以**传播到功能,可能是意外和混乱. (3认同)