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

时间:2013-10-24 11:23:57

标签: python

Python不支持C风格的++a增量,但令我惊讶的是,它并没有抱怨导致我暂时不知道为什么我的循环不起作用。

尝试了一些事情(首先使用a=0初始化)我发现a++a--会产生语法错误,但++a却没有。虽然--a在Python 3.3中产生语法错误,但在Python 2.7中没有。

发生了什么事?为什么++a没有出错?为什么--a在2.7中没有给出错误,但确实在3.3中出错?

3 个答案:

答案 0 :(得分:16)

看看这个控制台会话:

>>> a = 10
>>> ++a
10
>>> +a
10
>>> -a
-10
>>> --a
10

基本上,++a == +(+(a))--a == -(-(a))。这是一个击中概念家(和乐趣):

>>> ++++++++++a
10

以下代码示例除了向您展示python有多么有趣之外没有任何意义:

>>> +-+-+a
10

通过这样的方式,您可以创建运行的ASCII艺术。

如果你想增加,你可以这样做:a += 1--a适用于Python 2 and 3

答案 1 :(得分:12)

简答:它调用__pos__方法两次。考虑一下:

>>> 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时,它基本上什么也没做。

答案 2 :(得分:0)

不,在Python(2.x和3.x)中,使用++var将返回与之前相同的变量值,前提是变量的值实际上是一个数字。使用var++会引发异常。

此外,在Python中,++var操作的行为与其他语言不同,例如PHP,JS,C ++,其中++var实际上意味着您要将变量的值增加1但是在Python中,要增加,你必须使用类似var = var + 1var += 1的东西,否则它将无效。