字典操作顺序

时间:2013-03-17 00:55:09

标签: python dictionary

我正在使用可变数据结构并注意到执行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}。很明显,键的值被评估为第二种哪种有意义(如果我们得到异常或获得值,那么制作密钥的重点是什么?)。

是否记录了此行为?我无法在官方文档上找到任何内容,谷歌搜索也没有为我的问题做任何事情。无论实施和版本如何,我们都保证这个订单吗?是否有更多这样的问题需要注意?

1 个答案:

答案 0 :(得分:3)

  

Python从左到右评估表达式。请注意,在评估作业时,会在左侧之前评估右侧。

请参阅5.14. Evaluation order