什么是Python的解释器在" a ++ 1"为什么?

时间:2015-03-12 16:59:33

标签: python

我注意到我的Python解释器有点奇怪:

$ python
Python 2.7.8 (default, Nov 10 2014, 08:19:18) 
[GCC 4.9.2 20141101 (Red Hat 4.9.2-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
>>> for i in range(3):
...   for j in range(3):
...     a ++ 1
... 
2
2
2
2
2
2
2
2
2
>>> 

这里发生了什么?为什么Python打印什么?

3 个答案:

答案 0 :(得分:8)

a ++ 1只是做了一次补充。正如jonrsharpe在评论中提到的那样,这个值在循环中打印,因为它返回的值不是None

a = 1
a ++ 1 == a + (+1)  # True
a +- 1 == 0  # True

答案 1 :(得分:2)

实际上它的a+(+1)第二个+被python解释为1的标志。

其他例子:

>>> 3+-1
2
>>> 3++1
4

答案 2 :(得分:2)

Python交互式解释器打印所有 expression statement结果,除非它们生成None

>>> a = 1
>>> for i in range(3):
...     a
... 
1
1
1

这不仅限于顶级的表达式语句,这也适用于compound statements类似循环中的表达式。唯一的例外是函数和类中的表达式语句:

>>> def foo():
...     a
... 
>>> foo()
>>> 
>>> class Foo():
...     a
...
>>>

您的a ++ 1表达式只是向a添加1,但从不改变a本身; Python将其解释为与a + (+1)a + 1相同,因此您始终会看到2回显。