什么是++运算符在Python中做什么?

What is ++ operator doing in Python?

本问题已经有最佳答案,请猛点这里访问。

python不支持C风格的++a增量,但是,令我惊讶的是,它也没有抱怨,导致我暂时困惑为什么循环不能工作。

尝试了一些方法(首先用a=0初始化),我发现a++a--会产生语法错误,但++a不会。虽然--a会在python 3.3中产生语法错误,但在python 2.7中不会。

发生什么事?为什么++a不给出错误?为什么--a在2.7中不给出错误,而在3.3中给出错误?


采取看看这个控制台会话:

1
2
3
4
5
6
7
8
9
>>> a = 10
>>> ++a
10
>>> +a
10
>>> -a
-10
>>> --a
10

基本上,++a == +(+(a))--a == -(-(a))。这一概念的一个hit the home(和乐趣):

1
2
>>> ++++++++++a
10

下面的代码示例显示比其他用途的服务没有多少乐趣是:你的Python

1
2
>>> +-+-+a
10

一个这样的东西,可以让你运行的是ASCII艺术。

如果你想增加你的IT a += 1样等。在Python和--a工场2和3。


短的回答:它的__pos__调用方法两次。例如:考虑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> class A(object):
...     def __init__(self, x):
...         self.x = x
...     def __pos__(self):
...         return A(2 * self.x)
...     def __repr__(self):
...         return 'A(%s)' % self.x
...
>>> a = A(1)
>>> a
A(1)
>>> +a
A(2)
>>> ++a
A(4)
>>> +++a
A(8)

为整数,为+x归来x,它基本上是没有的。


不,(是在Python 2.x和3.x),使用++var将返回相同的值的变量,它是可变的,提供这样一个价值数是什么。与使用var++想提高对异常。

因此,在操作的++varPython的行为是不作为和作为其他一些语言,像PHP,JavaScript,C++,在++var实际上意味着你是一个价值的变量加1。但在Python中,你必须使用一个增量,或什么样var = var + 1var += 1或它不会工作。