Python 에서 is 와==판단 의 차이

2767 단어 Pythonis==
Python 에서 두 대상(변수)이 같은 지 비교 하면'is'와'=='으로 조작 할 수 있 지만 둘 은 어떤 차이 가 있 습 니까?언제"is"를 사용 합 니까?언제"="을 사용 합 니까?면접 에서 많은 후보 들 이 이 두 가 지 를 완전히 말 하기 어렵 다 는 것 을 알 게 되 었 기 때문에 이 글 에서'파 이 썬 의 선'은 두 사람 을 깊이 있 게 비교 소개 할 것 이다.
먼저 예 를 들다
황 군 은 최근 에 주머니 사정 이 매우 넉넉 해서 많은 돈 을 들 여 P90D 테슬라 한 대 를 구 매 했다.우 리 는 잠시 이 차 의 이름 을'작은 P'라 고 지 었 다.이 차 는 옆 왕 씨 네 차(차 이름 은'왕 군')와 똑 같 고 모델 이 든 외모 든 가격 이 든 모두 똑 같 으 며 같은 차례 에 생산 된 것 이다.여기 서 우 리 는'작은 P'와'왕 군'이 똑 같 고 똑 같은(euqal)두 대 라 고 말 할 수 있 지만 본질 적 으로 이것 은 두 개의 서로 다른 대상 이다.어느 날 샤 오 쥔 은 그의 애 차 에'애 마'라 는 닉네임 을 붙 였 다.우리 가'작은 P'라 고 말 할 때 사실은'애 마'를 토론 하 는 것 이다.본질 적 으로 두 이름 은 같은 대상 을 가리 키 기 때문이다.여기 서 우 리 는'작은 P'와'애 마'를 똑 같은(identical)라 고 부른다.
Python 에서'='과'is'의 차 이 는 비교 할 수 있 습 니 다.전 자 는 같은 비교 이 고 두 대상 의 값 이 같은 지,후 자 는 일치 성 비교 이 며 두 대상 의 메모리 공간 주소 가 같은 지 비교 합 니 다.
분명히 메모리 주소 가 같 으 면 그들의 값 도 똑 같 을 것 이다.따라서'is'가 True 로 돌아 가면'=='도 반드시 True 로 돌아 가 고 반대로 성립 되 지 않 는 다.
talk is cheap, show me the code
목록 대상 을 만 든 다음 이름 a 를 지정 하고 다른 변수 b 를 정의 하여 같은 대상 을 가리 키 도록 합 니 다.

>>> a = [1, 2, 3]
>>> b = a
a 와 b 가 인쇄 한 값 은 모두 같 습 니 다.이 두 변 수 는 같은 대상 을 가리 키 기 때문에 마치 한 대의 차 에 두 개의 다른 이름 을 짓 는 것 과 같 습 니 다.

>>> a
[1, 2, 3]
>>> b
[1, 2, 3]
당연히 is 와=모두 True 로 돌아간다.

>>> a == b
True
>>> a is b
True
새로운 대상 을 만 듭 니 다.비록 값 이 같 지만 그들 은 본질 적 으로 두 개의 서로 다른 대상 이 고 두 개의 서로 다른 메모리 공간 에 있 기 때문에'is'는 False 로 돌아 갑 니 다.

>>> c = [1,2,3]
>>> a is c
False
그리고 비교 하 는 두 변수 가 같은 대상 을 가리 킬 때'is'는 True 로 돌아 가 고'=='은 최종 적 으로 대상 의 에 달 려 있다.eq__() 방법,본질 적 으로 두 변 수 를'=='으로 비교 조작 하여 대상 의 를 호출 합 니 다.eq__() 방법예 를 들 면:

>>> class Foo(object):
    def __eq__(self, other):
      return True

>>> f = Foo()
>>> f == 1
True
>>> f == None
True
>>> f is None
False

사용자 정의 클래스 foo 의 eq 방법 은 항상 True 로 돌아 가기 때문에 모든 대상 과'=='을 진행 하 는 것 은 True 로 돌아 갑 니 다.None 와 는 다른 대상 이기 때문에'is'작업 은 False 로 되 돌아 갑 니 다.
마지막 으로 이 코드 가 왜 같은 조작 에 다른 결과 가 있 는 지 생각해 보 세 요.

>>> a = 257
>>> b = 257
>>> a is b
False
>>> a = 123
>>> b = 123
>>> a is b
True
요약:
두 값 이 같은 지 비교 하려 면==,같은 대상 인지 비교 하려 면 is 를 사용 하 세 요.
사실 python 의 is 비교 대상 은 C 언어의 지침 과 같 습 니 다.주소 가 같은 지침 만 이 같은 지침 입 니 다.

좋은 웹페이지 즐겨찾기