2017-04-12 37 views
4

如果我运行下面的代码:如何执行Python字典?

a={} 
a[input("key: ")] = input("value: ") 

的解释首先促使我value input,然后key input

这是什么原因?

+3

来自Python文档中的[Simple Statements](https://docs.python.org/3/reference/simple_stmts.html#assignment-statements):“赋值语句计算表达式列表(请记住,这个可以是单个表达式或逗号分隔列表,后者产生一个元组),并将单个结果对象从左到右分配给每个目标列表。“ –

+0

你也可以看看:[Python的内置字典是如何实现的](http://stackoverflow.com/questions/327311/how-are-pythons-built-in-dictionaries-实现) –

回答

6

通常内部表达式的顺序永远不能保证。在你的案例中发生的事情是,解释者首先找出需要放入字典的东西,然后找出它应该放在哪里。从口译员的角度来看,这是更为优化的顺序。

因为在输入('value')调用过程中可能发生某种情况,就像异常,或者您可以简单地终止您的程序。那么,为什么还要找出把价值放在哪里,直到你真正拥有它。

在你关心命令你应该做到以下几点情况:

key = input('key') 
a[key] = input('value') 
5

docs

的Python计算表达式从左至右。请注意,虽然 评估分配,但右侧在 左侧之前评估。