나는 이것이 중복되는 것 같지 않습니다. is
대 ==
의 특정 사례의 유형을 비교하고 있지만 알려 주시면 질문을 삭제하겠습니다.타입/클래스를 비교할 때 '=='연산자 대신 'is'연산자를 사용하는 것이 안전할까요?
저는 파이썬에서 is
연산자가 실제로 id(type(a))==id(<type>)
으로 변환된다는 것을 알고 있습니다. 그러나 지금까지 나는 type(a) is <type>
이 예측 가능한 결과를주는 것으로 나타났습니다. 제 질문은 입니다. is
연산자를 사용하면 예기치 않은 결과 인 (예 : 'foo' is str
이 False
인 결과)이 생성됩니까? 또는 파이썬은 type
클래스를 예측 가능한 위치에 저장하므로 is
은 항상 ==
과 동일한 결과를 제공합니까? 나는이 문맥에서 다소 더 읽을 수있는 is
을 발견한다.
이 경우는 내가 인데 상속 된 클래스/서브 클래스 (이 경우 isinstance
이 적합 할 것임)을 다루지 않은 경우입니다.
'is'를 'id'비교로 생각하지 마십시오. 'a is b'는 'a'와 'b'가 같은 객체 인 경우 'True'로 평가됩니다. 그것이 당신이 찾고있는 것이라면, 그것을 계속 사용하십시오. – user2357112
특히, 메모리 위치는 전적으로 관련이 없습니다. CPython 이외의 다른 Python 구현에서는 식의 중간에서 변경 될 수도 있습니다 ('id'값은 그렇지 않지만). – user2357112
@ user2357112 죄송합니다. 여러 개의 stackoverflow 스레드에서이 설명을 들었습니다. 나는 제한된 상황에서만 그 작업이 동등하다고 생각합니다. –