これは私のコードの一部です...
def contactMaster(data="",url= str(chosenMaster)+"todolist"):
print "url: "+url
「http://www.mysite.com/blah/1234/todolist」ではなく「todolist」のみを出力します
なぜ機能しないのですか??
これは私のコードの一部です...
def contactMaster(data="",url= str(chosenMaster)+"todolist"):
print "url: "+url
「http://www.mysite.com/blah/1234/todolist」ではなく「todolist」のみを出力します
なぜ機能しないのですか??
デフォルトの引数は、関数が実行されたときではなく、関数が定義されたときに評価されます。したがって、Pythonが定義するときにが空の場合、は。のみを出力します。chosenMaster
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
しても効果はありません。