1

Python は比較的初心者です。現在、次の問題が発生しています。特定の入力を与えると定義された関数が実行されるように辞書を設定しましたが、関数を実行しないように入力を設定しても実行されます。基本的にコードは次のようになります。

options = []

def function0(str): print(str,"0")

str = "blahblahblah"

operations = {0:function0(str)}

for i in range(len(options)): operations[options[i]]

このコードはまだ function0 の出力を出力しています。また、辞書の「操作」を設定した直後に関数を実行していると結論付けました。それはなぜですか、どうすればそうならないのでしょうか?

4

2 に答える 2

5

関数を呼び出すため、コードが実行されます。引数としてwithfunction0(str)の戻り値に評価されます。function0str

関数オブジェクトを dict に入れてさらに使用する場合は、次のようにします。

operations = {0: function0}

いくつかの補足事項:

  1. str変数名として使用しないでください。strは組み込み型であり、変数でこの名前を隠してはなりません。
  2. intインデックスとして使用するためにan でループすることは非 Pythonic です。また、コードで関数を呼び出していないことに注意してください。ループは次のようになります。

    for op_index in operations:
         operations[op_index](mystr)
    

    また:

    for op in operations.values():
        op(mystr)
    
于 2013-01-15T18:40:55.553 に答える
2

これは、各行がすぐに評価されるため、コンソールにコードを入力すると発生します。

おそらくあなたが意図したのはこれです:

operations = {0:function0}
for i in options:
    operations[i](str)

シーケンスを実行するときは、明示的なカウンターを用意する必要がないことに注意してください。だから、その部分は必要ありませんrange(len(options))

于 2013-01-15T18:40:52.470 に答える