3

重複の可能性:
Pythonでのインクリメントおよびデクリメント演算子の動作

Pythonはまったく新しいので、xを増やすと思って++xを作成しました。だから私はそれについて間違っていました、問題ありません。しかし、構文エラーもありません。したがって、私の質問:Pythonで++ xは実際に何を意味しますか?

4

1 に答える 1

4

+演算子は単項プラス演算子です; 数値引数を変更せずに返します。したがって、++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 に答える