重複の可能性:
Pythonでのインクリメントおよびデクリメント演算子の動作
Pythonはまったく新しいので、xを増やすと思って++xを作成しました。だから私はそれについて間違っていました、問題ありません。しかし、構文エラーもありません。したがって、私の質問:Pythonで++ xは実際に何を意味しますか?
重複の可能性:
Pythonでのインクリメントおよびデクリメント演算子の動作
Pythonはまったく新しいので、xを増やすと思って++xを作成しました。だから私はそれについて間違っていました、問題ありません。しかし、構文エラーもありません。したがって、私の質問:Pythonで++ xは実際に何を意味しますか?
+
演算子は単項プラス演算子です; 数値引数を変更せずに返します。したがって、++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()))))