>  기사  >  백엔드 개발  >  Python에서 is와 ==의 차이점은 무엇입니까? Python에서 is와 ==의 차이점 소개

Python에서 is와 ==의 차이점은 무엇입니까? Python에서 is와 ==의 차이점 소개

不言
不言앞으로
2018-10-29 17:26:002748검색

이 기사의 내용은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제