++ 运算符在 Python 中做啥? [复制]

Posted

技术标签:

【中文标题】++ 运算符在 Python 中做啥? [复制]【英文标题】:What is ++ operator doing in Python? [duplicate]++ 运算符在 Python 中做什么? [复制] 【发布时间】:2013-11-03 01:56:42 【问题描述】:

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

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

发生了什么事?为什么++a 不报错?为什么--a 2.7 不报错,3.3 报错?

【问题讨论】:

我手头没有 3.3,你遇到什么错误? 显然我是个布偶,因为当我再次尝试时,它工作正常。 【参考方案1】:

简短回答:它调用__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】:

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

另外,在 Python 中,++var 操作的行为与其他一些语言(如 php、JS、C++)不同,其中 ++var 实际上意味着您要将变量的值增加 1。但在 Python 中,要增加,您必须使用 var = var + 1var += 1 之类的东西,否则它将不起作用。

【讨论】:

【参考方案3】:

看看这个控制台会话:

>>> 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 中工作。

【讨论】:

@glglgl hi5 伙计。并且红宝石学家说红宝石得到了所有的乐趣:P

以上是关于++ 运算符在 Python 中做啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

~> 运算符是做啥的? [复制]

:: 在 PostgreSQL 中做啥? [复制]

??!??! 是啥意思?运算符在 C 中做啥?

“?”是啥意思?和“:”在布尔语句中做啥? [复制]

|=(管道等号)符号在python中做啥?

3D 在这个 HTML 中做啥?