문자열 비교: '==' 대 'is' 수수께끼
프로그래밍에서 문자열 비교는 종종 중요한 작업입니다. 그러나 '==' 및 'is' 연산자를 사용하면 때로는 다른 결과가 나올 수 있어 개발자가 당황할 수 있습니다.
차이점 이해
'=' 연산자는 확인합니다. 값의 동일성을 확인하는 반면 'is'는 메모리의 동일성을 확인합니다. 동일성 테스트에서는 두 변수가 메모리에서 정확히 동일한 객체를 참조하는지 확인하고 동등성 테스트에서는 해당 값을 비교합니다.
차이가 발생하는 이유
문자열을 비교할 때 Python은 다음을 최적화합니다. 기존 문자열을 재사용하여 메모리 사용량을 늘립니다. 따라서 동일한 문자열 값을 여러 변수에 할당하면 새 문자열 개체가 생성되지 않고 대신 동일한 기본 개체를 참조할 수 있습니다. 이는 동일한 문자열에 대해 '=='가 True를 반환할 수 있는 이유를 설명합니다.
그러나 문자열이 변경되거나 다른 값이 할당되면 새 개체가 생성되어 ID 링크가 끊어집니다. 결과적으로 '=='는 값이 동일하기 때문에 여전히 True를 반환하더라도 'is'는 False를 반환합니다.
예
다음 코드를 고려하세요.
s1 = 'text' s2 = 'text'
여기서 s1과 s2는 모두 동일한 문자열 객체를 참조하므로 '=='와 'is'는 모두 반환됩니다. 진실. 그러나 s2를 수정하면:
s2 = s2 + ' more'
이제 s2에 대한 새 문자열 개체가 생성되어 ID 링크가 끊어집니다. '=='는 값이 동일하기 때문에 여전히 True를 반환하지만, 'is'는 s1과 s2가 다른 객체를 참조하기 때문에 False를 반환합니다.
위 내용은 Python 문자열 비교: 언제 `==`와 `is`를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!