Python의 문자열 비교:는 vs입니다.==
내가 쓰고 있는 Python 스크립트가 coughreely 동작하고 있는 것을 알아차리고 무한 루프까지 추적했습니다. 루프 상태는while line is not ''
디버거에서 그것을 실행해 보니, 그 행은 사실''
로 바꿨을 때!=''
보다는is not ''
, 잘 작동했습니다.
또한 int 값과 Boolean 값을 비교할 때에도 기본적으로 '=='만 사용하는 것이 좋습니까?저는 항상 'is'를 사용하는 것을 좋아했습니다.왜냐하면 'is'가 미적으로 더 즐겁고 피토닉하기 때문입니다(그래서 제가 이 함정에 빠졌습니다). 하지만 같은 아이디를 가진 두 물체를 찾는 것에 신경을 쓸 때를 위해 남겨두려는 의도일까요?
모든 기본 제공 Python 개체(예: 문자열, 목록, 딕트, 함수 등)의 경우 x가 y이면 x==y도 True입니다.
항상은 아냐.NaN은 반례입니다.하지만 보통 아이덴티티(is
)는 평등을 의미합니다(==
)의 반대는 사실이 아닙니다.두 개의 개별 객체가 동일한 값을 가질 수 있습니다.
또한 int 값과 Boolean 값을 비교할 때에도 기본적으로 '=='만 사용하는 것이 좋습니까?
사용하다==
값을 비교할 때is
아이덴티티를 비교할 때.
ints(또는 일반적으로 불변의 유형)를 비교할 때 거의 항상 전자를 원합니다.작은 정수를 비교할 수 있는 최적화가 있습니다.is
하지만 기대는 하지 마세요.
부울 값의 경우 비교를 전혀 수행하지 않아야 합니다.대신:
if x == True:
# do something
기입:
if x:
# do something
비교용None
,is None
보다 바람직하다== None
.
저는 항상 'is'를 사용하는 것을 좋아했습니다.왜냐하면 'is'가 미적으로 더 즐겁고 피토닉하기 때문입니다(그래서 제가 이 함정에 빠졌습니다). 하지만 같은 아이디를 가진 두 물체를 찾는 것에 신경을 쓸 때를 위해 남겨두려는 의도일까요?
네, 바로 그거에요.
어떻게 하면 좋은지 작은 예를 보여드리고 싶습니다.is
그리고.==
불변의 유형에 관련되어 있습니다.시험해 보세요.
a = 19998989890
b = 19998989889 +1
>>> a is b
False
>>> a == b
True
is
메모리내의 2개의 오브젝트를 비교합니다.==
는 그 값을 비교합니다.예를 들어 작은 정수가 Python에 의해 캐시되는 것을 볼 수 있습니다.
c = 1
b = 1
>>> b is c
True
You should use ==
when comparing values and is
when comparing identities. (Also, from an English point of view, "equals" is different from "is".)
The logic is not flawed. The statement
if x is y then x==y is also True
should never be read to mean
if x==y then x is y
It is a logical error on the part of the reader to assume that the converse of a logic statement is true. See http://en.wikipedia.org/wiki/Converse_(logic)
See This question
Your logic in reading
For all built-in Python objects (like strings, lists, dicts, functions, etc.), if x is y, then x==y is also True.
is slightly flawed.
If is
applies then ==
will be True, but it does NOT apply in reverse. ==
may yield True while is
yields False.
ReferenceURL : https://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs
'source' 카테고리의 다른 글
Elastix 4 및 MariaDB 5.5.50: 외부 키 제약 조건을 복제할 수 없습니다. (0) | 2022.09.18 |
---|---|
사전에 특정 키가 포함되어 있는지 테스트하는 방법 (0) | 2022.09.18 |
Python 'with' 문을 사용하는 동안 예외 포착 (0) | 2022.09.17 |
/usr/libexec/java_home에서 반환된 Mac OS의 기본 Java VM을 변경하는 방법 (0) | 2022.09.17 |
서버가 비활성 시간대를 반환했습니다.Advanced 탭으로 이동하여 servertimezone 속성을 수동으로 설정합니다. (0) | 2022.09.17 |