python - 특수문자 - 파이썬 문자열 판별
파이썬에서 문자열 비교:대== (3)
이 질문에는 이미 답변이 있습니다.
나는 쓰고있는 파이썬 스크립트가 다람쥐처럼 행동하고있는 것을 알아 채고 무한 루프로 추적했다. 루프 상태는 while line is not ''
. 디버거에서 실행하면 라인이 사실임을 알게되었습니다. 내가 그것을 !=''
아닌 !=''
변경했을 때, 그것은 잘 동작했습니다.
또한 int 또는 부울 값을 비교할 때도 기본적으로 '=='을 사용하는 것이 일반적으로 더 나은 것으로 간주됩니까? 나는 그것이 더 심미적으로 기분 좋고 파이썬 스럽다는 것을 발견했기 때문에 항상 'is'를 사용하고 싶었습니다. (이것이 내가이 함정에 빠졌던 방식입니다 ...)하지만, 두 가지를 찾는 것에 관심이있을 때만 예약하려고했는지 궁금합니다. 동일한 ID를 가진 객체.
모든 내장 파이썬 객체 (문자열,리스트, 딕트, 함수 등)의 경우, x가 y이면 x == y도 True입니다.
항상 그런 것은 아닙니다. NaN은 반례입니다. 그러나 보통 , 동일성 ( is
) is
평등 ( ==
)을 의미합니다. 반대는 사실이 아닙니다 : 두 개의 별개의 객체는 같은 값을 가질 수 있습니다.
또한 int 또는 부울 값을 비교할 때도 기본적으로 '=='을 사용하는 것이 일반적으로 더 나은 것으로 간주됩니까?
값을 비교할 때 ==
사용하고 ID를 비교할 때 사용합니다.
int (또는 일반적으로 불변 인 타입)을 비교할 때, 당신은 거의 항상 이전을 원한다. 작은 정수를 is
와 비교할 수 is
있지만 최적화에는 의존하지 않는 최적화가 있습니다.
부울 값의 경우, 비교를해서는 안됩니다. 대신에:
if x == True:
# do something
쓰다:
if x:
# do something
None
과 비교할 때, is None
이 선호 됨 == None
.
나는 그것이 더 심미적으로 기분 좋고 파이썬 스럽다는 것을 발견했기 때문에 항상 'is'를 사용하고 싶었습니다. (이것이 내가이 함정에 빠졌던 방식입니다 ...)하지만, 두 가지를 찾는 것에 관심이있을 때만 예약하려고했는지 궁금합니다. 동일한 ID를 가진 객체.
네, 그게 정확히 무엇을위한 것입니다.
나는 and ==
가 불변의 타입에 어떻게 관련되어 있는지에 대한 약간의 예를 보여주고 싶다. 시도해보십시오 :
a = 19998989890
b = 19998989889 +1
>>> a is b
False
>>> a == b
True
메모리의 두 객체를 비교하면 ==
는 값을 비교합니다. 예를 들어, 작은 정수가 파이썬에 의해 캐시된다는 것을 알 수 있습니다 :
c = 1
b = 1
>>> b is c
True
값을 비교할 때 ==
를 사용해야하고 ID를 비교할 때 사용해야합니다. (또한, 영어의 관점에서, "동등"은 "있는"과 다릅니다.)
이 질문 보기
독서의 논리
모든 내장 파이썬 객체 (문자열,리스트, 딕트, 함수 등)의 경우, x가 y이면 x == y도 True입니다.
약간 결함이 있습니다.
if is
적용되면 ==
는 참이지만 역순으로 적용되지는 않습니다. ==
yield is
False is
True를 반환 할 수 있습니다.