我正在使用可变数据结构并注意到执行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}
。很明显,键的值被评估为第二种哪种有意义(如果我们得到异常或获得值,那么制作密钥的重点是什么?)。
是否记录了此行为?我无法在官方文档上找到任何内容,谷歌搜索也没有为我的问题做任何事情。无论实施和版本如何,我们都保证这个订单吗?是否有更多这样的问题需要注意?