可能重复:
Python 中递增和递减运算符的行为
对 python 完全陌生,我写了 ++x 认为它会增加 x。所以我错了,没问题。但也没有语法错误。因此我的问题是: ++x 在 python 中的实际含义是什么?
可能重复:
Python 中递增和递减运算符的行为
对 python 完全陌生,我写了 ++x 认为它会增加 x。所以我错了,没问题。但也没有语法错误。因此我的问题是: ++x 在 python 中的实际含义是什么?
+
运算符是一元加运算符;它返回其数字参数不变。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()))))