Python 不支持 C 风格的++a
增量,但令我惊讶的是,它也没有抱怨导致我暂时对为什么我的循环不工作感到困惑。
尝试一些事情(首先用 初始化a=0
)我发现a++
并a--
产生语法错误,但++a
没有。虽然--a
在 Python 3.3 中会产生语法错误,但在 Python 2.7 中不会。
这是怎么回事?为什么不++a
报错?为什么--a
2.7 不报错,但 3.3 报错?
Python 不支持 C 风格的++a
增量,但令我惊讶的是,它也没有抱怨导致我暂时对为什么我的循环不工作感到困惑。
尝试一些事情(首先用 初始化a=0
)我发现a++
并a--
产生语法错误,但++a
没有。虽然--a
在 Python 3.3 中会产生语法错误,但在 Python 2.7 中不会。
这是怎么回事?为什么不++a
报错?为什么--a
2.7 不报错,但 3.3 报错?
看看这个控制台会话:
>>> a = 10
>>> ++a
10
>>> +a
10
>>> -a
-10
>>> --a
10
基本上++a == +(+(a))
, 和--a == -(-(a))
。这个是为了把这个概念打回家(而且是为了好玩):
>>> ++++++++++a
10
以下代码示例除了向您展示 Python 有多么有趣之外,没有其他目的:
>>> +-+-+a
10
有了这样的东西,你可以制作运行.
如果你想增加你这样做a += 1
:并且--a
适用于Python 2 和 3。
简短的回答:它调用该__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
,它基本上什么都不做。
不,在 Python(2.x 和 3.x)中, ++var
如果变量的值实际上是一个数字, using 将返回与以前相同的变量值。并且使用var++
会引发异常。
此外,在 Python 中,++var
操作的行为与其他一些语言(如 PHP、JS、C++)不同,其中++var
实际上意味着您要将变量的值增加 1。但在 Python 中,要增加,您必须使用类似var = var + 1
或者var += 1
它不会工作。