프로그래밍 언어/Python

Python의 문자열 비교 : is vs ==

Rateye 2021. 11. 23. 10:20
728x90
반응형
질문 : Python의 문자열 비교 : is vs. == [duplicate]

내가 작성하고있는 Python 스크립트가 squirrelly 작동하는 것을 발견하고 루프 조건이있는 while line is not '' 무한 루프로 추적했습니다. 디버거에서 실행 해보면 실제로 '' 라인이라는 것이 밝혀졌습니다. 내가 그것을 변경하는 경우에 !='' 보다는 is not '' , 그것은 벌금을했다.

또한 int 또는 Boolean 값을 비교할 때에도 기본적으로 '=='를 사용하는 것이 일반적으로 더 나은 것으로 간주됩니까? 나는 항상 'is'를 사용하는 것을 좋아했습니다. 미적으로 더 즐겁고 비단뱀 같은 느낌을주기 때문입니다 (이게 제가이 함정에 빠진 방식입니다 ...).하지만 두 가지를 찾는 데 관심이있을 때만 예약 할 수 있는지 궁금합니다. 동일한 ID를 가진 개체.

답변

모든 내장 Python 객체 (문자열, 목록, 사전, 함수 등)의 경우 x가 y이면 x == y도 True입니다.

항상 그런 것은 아닙니다. NaN은 반례입니다. 그러나 일반적 으로 동일성 ( is )은 같음 ( == )을 의미합니다. 그 반대는 사실이 아닙니다. 두 개의 별개 개체가 동일한 값을 가질 수 있습니다.

또한 int 또는 Boolean 값을 비교할 때에도 기본적으로 '=='를 사용하는 것이 일반적으로 더 나은 것으로 간주됩니까?

당신은 사용 == 값을 비교 때 is 정체성을 비교할 때.

int (또는 일반적으로 불변 유형)를 비교할 때 거의 항상 전자를 원합니다. is 와 비교할 수있는 최적화가 있지만 이에 의존하지 마십시오.

부울 값의 경우 전혀 비교하지 않아야합니다. 대신에:

if x == True:
    # do something

쓰다:

if x:
    # do something

None 과 비교할 때 == None is None 이 선호됩니다.

나는 항상 'is'를 사용하는 것을 좋아했습니다. 미적으로 더 즐겁고 비단뱀 같은 느낌을주기 때문입니다 (이게 제가이 함정에 빠진 방식입니다 ...).하지만 두 가지를 찾는 데 관심이있을 때만 예약 할 수 있는지 궁금합니다. 동일한 ID를 가진 개체.

예, 그게 바로 그 목적입니다.

출처 : https://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs
728x90
반응형