这是我的一段代码...
def contactMaster(data="",url= str(chosenMaster)+"todolist"):
print "url: "+url
它只打印“todolist”而不是“http://www.mysite.com/blah/1234/todolist”
为什么它不起作用?
这是我的一段代码...
def contactMaster(data="",url= str(chosenMaster)+"todolist"):
print "url: "+url
它只打印“todolist”而不是“http://www.mysite.com/blah/1234/todolist”
为什么它不起作用?
默认参数是在定义函数时计算的,而不是在执行时计算的。所以如果chosenMaster
Python 定义时为空contactMaster
,则只打印todolist
。
您需要str(chosenMaster)
进入该功能。
有关详细信息,请参阅Python 教程中的默认参数值。那里的例子是:
默认值在定义范围内的函数定义点进行评估,因此
i = 5
def f(arg=i):
print arg
i = 6
f()
将打印
5
。
函数定义捕获chosenMaster
函数声明时的值,而不是调用函数时的值。
改为这样做:
def contactMaster(data='', url=None):
if url is None:
url = str(chosenMaster) + 'todolist'
print 'url: ' + url
因为默认函数参数是在定义函数时确定的。chosenMaster
事后更改不会有任何效果。