source

Python의 문자열 비교:는 vs입니다.==

gigabyte 2022. 9. 17. 09:56
반응형

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

반응형