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番目に評価され、どの種類の意味がありますか(例外が発生した場合、またはそのような値を取得した場合にキーを作成するポイントは何ですか?)。
この動作は文書化されていますか?私は公式ドキュメントで何も見つけることができず、グーグルも私の質問に対して何もしませんでした。実装やバージョンに関係なく、この注文は保証されますか?このような注意すべき落とし穴は他にもありますか?