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

Jac*_*ley 4 python

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

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

这是怎么回事?为什么不++a给出错误?为什么--a不在2.7中给出错误但在3.3中给出错误?

Gam*_*iac 16

看一下这个控制台会话:

>>> a = 10
>>> ++a
10
>>> +a
10
>>> -a
-10
>>> --a
10
Run Code Online (Sandbox Code Playgroud)

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

>>> ++++++++++a
10
Run Code Online (Sandbox Code Playgroud)

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

>>> +-+-+a
10
Run Code Online (Sandbox Code Playgroud)

有了这样的东西,你可以制作运行的 ASCII艺术品.

如果你想增加,你可以这样做:a += 1.而--a在工作Python 2和3.

  • @glglgl hi5 man.而rubyists说红宝石可以获得所有的乐趣:P (3认同)
  • ASCII艺术+1 :-) (2认同)

val*_*val 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)
Run Code Online (Sandbox Code Playgroud)

对于整数,作为+x回报x,它基本上什么也没做.