1

d[mods_mutable()] = mods_mutable()]可変データ構造を使用していますが、実行するとと同じ動作がないことに気付きました

key = mods_mutable()
d[key] = mods_mutable()

何が起こっているのかを推測するのは簡単です。一時ファイルへのクイックトリップと小さなテストにより、次のことが確認されます。

x = 0
def f():
    global x
    x += 1
    return x

d = dict()
d[f()] = f()
print d

それを実行すると、取得し{2: 1}ます。明らかに、キーの値は2番目に評価され、どの種類の意味がありますか(例外が発生した場合、またはそのような値を取得した場合にキーを作成するポイントは何ですか?)。

この動作は文書化されていますか?私は公式ドキュメントで何も見つけることができず、グーグルも私の質問に対して何もしませんでした。実装やバージョンに関係なく、この注文は保証されますか?このような注意すべき落とし穴は他にもありますか?

4

1 に答える 1

3

Pythonは式を左から右に評価します。割り当てを評価する際、右側が左側の前に評価されることに注意してください。

5.14を参照してください。評価順序

于 2013-03-17T00:57:53.883 に答える