3
가능한 중복 : 파이썬
Behaviour of increment and decrement operators in Python파이썬은 ++ x를 어떻게 파싱합니까?
완전히 새로운 내가 쓴 ++ X는 X를 증가 것이라고 생각. 그래서 나는 그것에 대해 틀 렸습니다. 문제 없습니다. 그러나 구문 오류도 없습니다. 따라서 내 질문 : ++ x 실제로 파이썬 의미 무엇입니까?
가능한 중복 : 파이썬
Behaviour of increment and decrement operators in Python파이썬은 ++ x를 어떻게 파싱합니까?
완전히 새로운 내가 쓴 ++ X는 X를 증가 것이라고 생각. 그래서 나는 그것에 대해 틀 렸습니다. 문제 없습니다. 그러나 구문 오류도 없습니다. 따라서 내 질문 : ++ x 실제로 파이썬 의미 무엇입니까?
+
연산자는 unary plus operator입니다. 숫자 인수를 변경하지 않고 리턴합니다. 그래서 ++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__
special method가 호출됩니다 ; 그렇지 않으면 위와 같이 TypeError
이 발생합니다.
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()))))
주셔서 감사합니다, 정말 유용한 답변, 특히 팁을 찾고 :
우리는 파이썬이 식을 구문 분석하는 방법을 보여 ast module를 사용하여이 문제를 확인하려면 ast 모듈. 나의 즉각적인 반응은 "변하지 않은 수치 적 주장을 되 돌린다"는 것이었다. 요점은 무엇인가? 하지만 사람들이 사용자 정의 클래스를 사용하여 그 용도를 찾을 수있을 것입니다. – user1734068
당신은 아마도 사용에 대한 X + = 1 – monkut