"a == x 또는 y 또는 z" 오류
변수를 여러 값과 비교하려고 할 때 다음을 사용하고 싶은 유혹이 듭니다. 다음과 같은 Python의 논리 연산자:
if a == x or y or z: # Incorrect
그러나 이 표현식은 항상 True로 평가됩니다. a의 값에 관계없이. 이는 이 컨텍스트에서 "or" 연산자가 예상대로 작동하지 않기 때문입니다.
"or" 연산자 작동 방식
Python의 "or" 연산자(|) 피연산자 중 하나라도 True이면 True로 평가됩니다. 따라서 위 표현식에서 x, y 또는 z 중 하나는 항상 True이므로(비어 있지 않은 값은 Python에서 True) 표현식은 a 값에 관계없이 True로 평가됩니다.
여러 값을 비교하는 올바른 방법
변수를 여러 값과 올바르게 비교하려면 몇 가지 방법이 있습니다. 옵션:
명시적인 "or" 연산자를 사용하여 각 값을 개별적으로 비교합니다:
if a == x or a == y or a == z: # Correct
유효한 값의 집합 또는 목록을 만들고 "in" 연산자를 사용하여 멤버십을 확인합니다.
if a in {"Kevin", "Jon", "Inbar"}: # Correct
다음과 함께 생성기 표현식을 사용합니다. 각 값을 명시적으로 확인하려면 "any()"를 사용하세요.
if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]): # Correct
성능 고려
성능을 위해 일반적으로 "in" 연산자와 함께 집합이나 목록을 사용하는 것이 좋습니다. 가장 빠른 옵션. "any()"를 사용하는 생성기 표현식은 가장 장황하고 가장 느립니다.
사용 예
승인된 사용자에게만 액세스 권한을 부여하려면:
authorized_names = {"Kevin", "Jon", "Inbar"} name = input("Please enter your name: ") if name in authorized_names: print("Access granted.") else: print("Access denied.")
위 내용은 Python에서 `a == x or y or z`가 항상 True로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!