파이썬에서 문자열 비교 : is vs. == [duplicate]
이 질문에는 이미 답변이 있습니다.
필자가 작성한 Python 스크립트가 다람쥐처럼 행동하고 루프 조건이 인 무한 루프까지 추적했습니다 while line is not ''
. 디버거에서 그것을 통해 실행하면 실제로 그 줄이 판명되었습니다 ''
. 내가 !=''
아닌로 변경했을 때 is not ''
정상적으로 작동했습니다.
또한 int 또는 Boolean 값을 비교할 때도 기본적으로 '=='을 사용하는 것이 일반적으로 더 나은 것으로 간주됩니까? 나는 항상 'is'를 사용하는 것을 좋아했습니다. 왜냐하면 나는 그것이 더 미학적으로 유쾌하고 pythonic (이 함정에 빠진 방법입니다 ...)을 발견했기 때문입니다.하지만 두 가지를 찾는 것에 관심이있을 때 예약 될 것인지 궁금합니다. 같은 ID를 가진 객체.
모든 내장 Python 객체 (예 : 문자열, 목록, dicts, 함수 등)의 경우 x가 y이면 x == y도 True입니다.
항상 그런 것은 아닙니다. NaN은 이에 대한 반례입니다. 그러나 일반적 으로 동일성 ( is
)은 평등 ( ==
)을 의미 합니다. 반대의 경우는 사실이 아닙니다. 두 개의 서로 다른 객체가 동일한 값을 가질 수 있습니다.
또한 int 또는 Boolean 값을 비교할 때도 기본적으로 '=='을 사용하는 것이 일반적으로 더 나은 것으로 간주됩니까?
==
값을 is
비교할 때 와 ID를 비교할 때 사용 합니다.
int (또는 일반적으로 불변 유형)를 비교할 때 항상 전자를 원할 것입니다. 작은 정수를와 비교할 수있는 최적화가 is
있지만 의존하지는 않습니다.
부울 값의 경우 비교를 수행하지 않아야합니다. 대신에:
if x == True:
# do something
쓰다:
if x:
# do something
에 대한 비교를 들어 None
, is None
이상이 바람직하다 == None
.
나는 항상 'is'를 사용하는 것을 좋아했습니다. 왜냐하면 나는 그것이 더 미학적으로 유쾌하고 pythonic (이 함정에 빠진 방법입니다 ...)을 발견했기 때문입니다.하지만 두 가지를 찾는 것에 관심이있을 때 예약 될 것인지 궁금합니다. 같은 ID를 가진 객체.
예, 그것이 바로 그 목적입니다.
나는 방법에 약간의 예를 보여 드리고자 is
과 ==
불변의 유형에 포함됩니다. 그것을보십시오 :
a = 19998989890
b = 19998989889 +1
>>> a is b
False
>>> a == b
True
is
메모리의 두 객체를 ==
비교하고 값을 비교합니다. 예를 들어 작은 정수가 파이썬에 의해 캐시되어 있음을 알 수 있습니다.
c = 1
b = 1
>>> b is c
True
==
값을 is
비교할 때 와 ID를 비교할 때 사용해야합니다 . 또한 영어의 관점에서 "같음"은 "is"와 다릅니다.
논리에 결함이 없습니다. 진술
x가 y이면 x == y도 참입니다.
의미로 읽혀서 는 안됩니다
x == y이면 x는 y입니다.
논리 문의 반대가 참이라고 가정하는 것은 독자 측의 논리 오류입니다. http://en.wikipedia.org/wiki/Converse_(logic) 참조
참조 이 질문을
독서의 논리
모든 내장 Python 객체 (예 : 문자열, 목록, dicts, 함수 등)의 경우 x가 y이면 x == y도 True입니다.
약간 결함이 있습니다.
경우는 is
다음 적용 ==
사실이 될 것이다, 그러나 역으로 적용되지 않습니다. False ==
를 is
산출 하는 동안 True를 산출 할 수 있습니다 .
참고 URL : https://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs
'development' 카테고리의 다른 글
반환 유형이없는 기능 위임 (0) | 2020.02.11 |
---|---|
파이썬에서 YAML 파일을 구문 분석하는 방법 (0) | 2020.02.11 |
쿼리 문자열의 가능한 최대 길이는 얼마입니까? (0) | 2020.02.11 |
C #의 일반 메소드에서 NULL을 어떻게 반환 할 수 있습니까? (0) | 2020.02.11 |
CSS를 사용하여 div를 세로로 스크롤 가능하게 만들기 (0) | 2020.02.11 |