Python输入是从右到左阅读的?

时间:2016-01-09 22:37:47

标签: python-2.7 input

我想制作一个名称/号码

的电话簿字典

我输入以下代码,但似乎输入是从右到左读取的

widget.winfo_class()

e.g。如果我输入:

萨米 123

创建以下字典:

p = {} 
p[raw_input()] = raw_input() 
print p

任何人都知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

首先评估赋值运算符的右侧,然后评估左侧的表达式以选择存储值的位置。

来自Python docs

  

赋值语句计算表达式列表(请记住,这可以是单个表达式或以逗号分隔的列表,后者产生元组)并将单个结果对象从左到右分配给每个目标列表。

这里,“表达列表”是右侧,而“目标列表”是左侧。 (因为像a, b = 1, 2这样的赋值在Python中是有效的。)在这种情况下,将其视为“表达式”和“目标”更容易。

遵循这些规则,如果我从:

开始

p[raw_input()] = raw_input()

我首先评估“表达式列表”(右侧,raw_input(),此时用户输入'sami'),此时我实际上有:

p[raw_input()] = 'sami'

左侧(“目标列表”)是subscription; docs tell us

  

如果目标是订阅:评估引用中的主表达式。它应该产生可变序列对象(例如列表)或映射对象(例如字典)。接下来,评估下标表达式。

所以,我首先评估引用中的“主要表达式”(仅p):

<强> p [raw_input()] = 'sami'

然后再次评估“下标表达式”(raw_input(),用户类型123):

<强> p [ '123' ] = 'sami' < / p>

现在可以完成作业,从而产生包含{ '123': 'sami' }

的字典