0

これは私のコードの一部です...

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

「http://www.mysite.com/blah/1234/todolist」ではなく「todolist」のみを出力します

なぜ機能しないのですか??

4

3 に答える 3

6

デフォルトの引数は、関数が実行されたときではなく、関数が定義されたときに評価されます。したがって、Pythonが定義するときにが空の場合、は。のみを出力します。chosenMastercontactMastertodolist

関数に移動する必要があり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 に答える