关于在Python3中使用带有一元运算符的空格的逻辑

Nan*_*ook 3 python python-3.x

当我为for循环创建索引计数时出错时我的问题就开始了,我在Python 3.4中发现了一个我不理解的行为.

> a = 1
> a =+ 2  #reversed 'plus and equal'
> a
2
> a += 2  #correct 'plus and equal'
> a
> a
4
Run Code Online (Sandbox Code Playgroud)

起初我认为这个错误本应该返回一个错误,但我开始认为反向的"加和等"逻辑可能会被解释为变量'a'等于正整数'2'.为了确认这一点,我尝试将变量设置为负整数,然后使用它来更改变量的符号.

> a =- 2
> a
-2
> a =- a
> a
2
> a = -a
> a
-2
Run Code Online (Sandbox Code Playgroud)

这一切让我想知道为什么一元运算符不需要与正在改变的整数或变量相邻.

ATL*_*LUS 5

Python从右到左阅读,因为equals右侧的内容首先被解释,所以你有两个方面:

(a) =(+ 2) 
Run Code Online (Sandbox Code Playgroud)

空白是自由空间,因此无论空格如何,解释器仍然会读取代码行,就好像空白不存在一样.因此,Python将其解释为equals +2如此,就像使整数为正(或者如果你做的那样是负数equals minus 2)

>>> a =+ 2 # note the whitespace
>>> a
>>> 2
>>> a = +2 # consistent interpretation
>>> a 
2
>>> a =- 2 # no matter where
>>> a
-2
>>> a = -2 # the whitespace is
>>> a
-2
Run Code Online (Sandbox Code Playgroud)

这就像你在分配时不必在平等之间留出空间.例如:

a = 1
Run Code Online (Sandbox Code Playgroud)

是相同的

a=1
Run Code Online (Sandbox Code Playgroud)

解释器以适当的顺序读取它,并在解释信息时操纵信息.

  • 我认为确实如此. (3认同)