이 기사의 내용은 Python에서 is와 ==의 차이점에 관한 것입니다. Python의 is 및 == 도입은 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
파이썬에는 많은 연산자가 있습니다. 오늘은 is와 == 연산자의 적용상의 본질적인 차이점에 대해 이야기하겠습니다.
두 연산자 is와 ==의 차이점에 대해 이야기하기 전에 먼저 Python의 객체에 포함된 세 가지 기본 요소, 즉 id(ID), type(데이터 유형) 및 value(값)를 알아야 합니다.
is와 ==는 모두 대상을 비교하고 판단하는 데 사용되지만 대상을 비교하고 판단하는 내용은 다릅니다. 구체적인 차이점을 살펴보겠습니다.
== 비교 연산자와 is 항등 연산자의 차이점
==은 Python 표준 연산자 중 비교 연산자로, 다음 두 문자열과 같이 두 개체의 값이 같은지 비교하고 확인하는 데 사용됩니다. . 객체 간 비교:
예제 1.
>>> a = 'cheesezh' >>> b = 'cheesezh' >>> a == b True
is는 항등 연산자라고도 합니다. 이 연산자는 객체 간의 고유한 ID, 즉 ID가 동일한지 비교하고 결정합니다. 다음 목록을 비교하면 is 항등 연산자의 작동 방식을 이해할 수 있습니다.
>>> x = y = [4,5,6] >>> z = [4,5,6] >>> x == y True >>> x == z True >>> x is y True >>> x is z False >>> >>> print id(x) 3075326572 >>> print id(y) 3075326572 >>> print id(z) 3075328140
처음 세 가지 예는 모두 True인데 마지막 예는 왜 False인가요? x, y, z의 값은 동일하므로 처음 두 개가 True가 되어도 문제가 없습니다. 마지막이 False인 이유는 세 개체의 ID를 보면 알 수 있습니다.
다른 예를 살펴보겠습니다. 예 3에서 동일한 유형의 a와 b의 (a==b)는 모두 True이지만 (a is b)는 아닙니다.
>>> a = 1 #a和b为数值类型 >>> b = 1 >>> a is b True >>> id(a) 14318944 >>> id(b) 14318944 >>> a = 'cheesezh' #a和b为字符串类型 >>> b = 'cheesezh' >>> a is b True >>> id(a) 42111872 >>> id(b) 42111872 >>> a = (1,2,3) #a和b为元组类型 >>> b = (1,2,3) >>> a is b False >>> id(a) 15001280 >>> id(b) 14790408 >>> a = [1,2,3] #a和b为list类型 >>> b = [1,2,3] >>> a is b False >>> id(a) 42091624 >>> id(b) 42082016 >>> a = {'cheese':1,'zh':2} #a和b为dict类型 >>> b = {'cheese':1,'zh':2} >>> a is b False >>> id(a) 42101616 >>> id(b) 42098736 >>> a = set([1,2,3])#a和b为set类型 >>> b = set([1,2,3]) >>> a is b False >>> id(a) 14819976 >>> id(b) 14822256
예제 3에서 볼 수 있듯이 a is b는 숫자 유형과 문자열 유형일 때만 True입니다. a와 b가 tuple, list, dict 또는 set 유형인 경우 a is b는 False입니다.
직접 시도해보고 a=257 및 b=257일 때 ID가 여전히 동일한지 확인하세요. 사실 파이썬 속도를 최적화하기 위해 작은 정수 개체 풀을 사용하여 정수에 대한 메모리 공간의 빈번한 적용 및 파괴를 방지합니다. Python의 작은 정수 정의는 [-5, 257), 숫자가 -5에서 256 사이인 경우에만 해당 ID가 동일합니다. 이 범위를 초과하면 동일한 방식으로 문자열 개체도 비슷한 버퍼 풀을 갖게 됩니다. 범위를 초과하면 동일합니다.
일반적으로 a is b는 숫자 유형과 문자열 유형이고 일반 개체 풀에 있는 경우에만 True이고, 그렇지 않은 경우 a와 b가 int, str, tuple, list, dict 또는 set 유형인 경우 a는 b는 둘 다 거짓입니다.
위 내용은 Python에서 is와 ==의 차이점은 무엇입니까? Python에서 is와 ==의 차이점 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!