0

这是我的一段代码...

def contactMaster(data="",url= str(chosenMaster)+"todolist"):
    print "url: "+url

它只打印“todolist”而不是“http://www.mysite.com/blah/1234/todolist”

为什么它不起作用?

4

3 回答 3

6

默认参数是在定义函数时计算的,而不是在执行时计算的。所以如果chosenMasterPython 定义时为空contactMaster,则只打印todolist

您需要str(chosenMaster)进入该功能。

有关详细信息,请参阅Python 教程中的默认参数值。那里的例子是:

默认值在定义范围内的函数定义点进行评估,因此

i = 5

def f(arg=i):
    print arg

i = 6
f()

将打印5

于 2012-04-11T18:17:01.853 回答
1

函数定义捕获chosenMaster函数声明时的值,而不是调用函数时的值。

改为这样做:

def contactMaster(data='', url=None):
    if url is None:
        url = str(chosenMaster) + 'todolist'
    print 'url: ' + url
于 2012-04-11T18:18:19.283 回答
0

因为默认函数参数是在定义函数时确定的chosenMaster事后更改不会有任何效果。

于 2012-04-11T18:16:45.167 回答