3

可能重复:
Python 中递增和递减运算符的行为

对 python 完全陌生,我写了 ++x 认为它会增加 x。所以我错了,没问题。但也没有语法错误。因此我的问题是: ++x 在 python 中的实际含义是什么?

4

1 回答 1

4

+运算符是一元加运算符;它返回其数字参数不变。So++x被解析为+(+(x)),并且给出x不变(只要x包含一个数字):

>>> ++5
5
>>> ++"hello"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: bad operand type for unary +: 'str'

如果+在用户定义类的对象上调用,则如果存在该__pos__特殊方法,则将调用该方法;否则,TypeError将按上述方式提出。

为了确认这一点,我们可以使用ast 模块来展示 Python 如何解析表达式:

import ast
print(ast.dump(ast.parse('++x', mode='eval')))
Expression(body=UnaryOp(op=UAdd(), operand=UnaryOp(op=UAdd(), operand=Name(id='x', ctx=Load()))))
于 2012-10-10T08:04:05.770 回答