나는 이것을 알지 못했지만, 분명히 and
과 or
키워드는 연산자가 아닙니다. 그들은 list of python operators에 나타나지 않습니다. 그냥 호기심에서 벗어난 이유는 무엇입니까? 연산자가 아닌 경우 정확히 무엇입니까?파이썬에서 "and"와 "or"연산자가없는 이유는 무엇입니까?
답변
제어 흐름 구조이기 때문에. 특히 : and
에 왼쪽 인수가 False로 평가되면
- , 오른쪽 인자가
or
에 왼쪽 인수가 True로 평가되면 모든 - 에서 평가되지 않습니다 오른쪽 인수에서 평가되지 않습니다 모든
따라서, 단순히 예약어되는 문제가 아니다. 연산자는 항상 모든 인수를 평가하기 때문에 연산자와 같이 작동하지 않습니다.
보시다시피>>> 1 | (1/0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> 1 or (1/0)
1
, 비트 OR (|
가) 평가를 모두 인수 :
당신은 이름에서 알 수 있듯이, 이 사업자이며, 비트 이항 연산자로이 대조 할 수 있습니다. 그러나 or
키워드는 왼쪽 인수가 참으로 평가 될 때 오른쪽 인수를 평가하지 않습니다. 그렇기 때문에 두 번째 명령문에서는 ZeroDivisionError
이 발생하지 않습니다.
그들은 이전에 문서로 키워드를 분류하고 있습니다.
사실, 그렇다고해서 변수 이름으로 사용할 수없는 것이 아닙니다. –
OP와 연결된 URL은 어휘 분석과 관련이 있으며, 어휘 적으로 키워드이며 운영자가 아닙니다. 질문이 구문 중 하나로 표현 된 경우 아래쪽 투표가 의미가 있습니다. – Jacob
기호의 특수 토큰이 아닌 예약 식별자이기 때문에 keywords입니다.
유형별 연산을 지원하기 위해 재정의 할 수 없으므로 다른 연산자의 범위에 속하지 않습니다.
나는 귀하의 인과 관계가 잘못되었다고 생각합니다. 연산자가 아니기 때문에 유형별 연산을 지원하도록 재정의 할 수 없습니다. –
파이썬은 현재의 '와'에 해당하는 모든 'XXX'특별한 방법을 제공하는 '나'와 '하지'부울 연산자하지 않습니다. 'and'및 'or'의 경우, 가장 가능성있는 이유는 이들 연산자가 단락 의미론을 갖는다는 것, 즉 결과가 제 1 피연산자로부터 결정될 수 있다면 제 2 피연산자는 평가되지 않는다는 것이다. 따라서 이러한 작업자를위한 특별한 방법을 제공하는 일반적인 기술은 작동하지 않습니다.
출처 : PEP 335
PEP 335 개 overloadable 사업자가 할 수있는 기능을 추가하는 방법에 대한 이야기,이 문제를 조금에 대해 설명합니다.
- 1. 파이썬에서 유니 코드를 문자열로 선언하는 이유는 무엇입니까?
- 2. MutableString이 파이썬에서 사용되지 않는 이유는 무엇입니까?
- 3. 파이썬에서 @ foo.setter가 작동하지 않는 이유는 무엇입니까?
- 4. 파이썬에서 HDIO_GETGEO를 호출 할 수없는 이유는 무엇입니까?
- 5. 파이썬에서 pysqlite를 볼 수없는 이유는 무엇입니까?
- 6. 반복 가능한 객체가 파이썬에서 길이가없는 이유는 무엇입니까?
- 7. 목록 이해가 파이썬에서 그렇게 불리는 이유는 무엇입니까?
- 8. jQuery 속성 선택기 내에서 논리 OR을 논리 AND와 결합하려면 어떻게해야합니까?
- 9. 파이썬에서 이국적인 함수 시그니처는 무엇입니까?
- 10. 동일한 문자열은 파이썬에서 '=='을 사용하여 FALSE를 반환합니다. 이유는 무엇입니까?
- 11. 파이썬에서 이러한 문자열이 내 정규 표현식에서 벗어나는 이유는 무엇입니까?
- 12. 이 dos 명령이 파이썬에서 작동하지 않는 이유는 무엇입니까?
- 13. 파이썬에서 모든 새로운 객체에 대해 refs가 2 증가하는 이유는 무엇입니까?
- 14. 파이썬에서 2/5.0을 나눌 때 오류가있는 이유는 무엇입니까?
- 15. weakproxy가 파이썬에서 항상 동등성을 유지하지 않는 이유는 무엇입니까?
- 16. 파이썬에서 인스턴스 .__ class__ 속성에 액세스 할 수없는 이유는 무엇입니까?
- 17. 파이썬에서 목록을 연결하는 방법은 무엇입니까?
- 18. 파이썬에서 표현식이란 무엇입니까?
- 19. 파이썬에서 3 % 4는 무엇입니까?
- 20. 파이썬에서 @ 기호의 목적은 무엇입니까?
- 21. 파이썬에서 "\ 00"은 무엇입니까?
- 22. 파이썬에서 데이터를 반환했습니다.
- 23. , " '"파이썬에서
- 24. 파이썬에서
- 25. 파이썬에서
- 26. 파이썬에서 ''와 ' "의 차이점은 무엇입니까?
- 27. 파이썬에서 enum의 일반적인 관행은 무엇입니까?
- 28. 파이썬에서 stderr를 리디렉션하는 방법은 무엇입니까?
- 29. 파이썬에서 파일을 다시로드하는 방법은 무엇입니까?
- 30. 파이썬에서 UDPServer를 종료하는 방법은 무엇입니까?
C에서'&&'와'||'는 단락 중일지라도 (왼쪽 값에 따라 오른쪽을 평가하지 마십시오) "연산자"라고합니다. 일부 다른 언어의 경우도 마찬가지입니다. –
예, 용어가 다를 수 있다는 것에 동의합니다. 요점은 파이썬이 일반적으로 연산자라고 부르는 것과는 근본적으로 다른 특성을 가지고 있다는 점입니다. –