我注意到我的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打印什么?
答案 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
回显。