[python] 기본 연산자(4) - 논리 연산자, 비트 연산자
아 이전 글 보수 연산 때문에 머리가 터질 거 같다.... 다행이다 이번 포스팅은 쉬우니까..
Membership Operators
멤버 연산자는 리스트 내에 포함이 되어 있냐 아니냐를 연산해준다
in | list 내에 포함되어 있으면 True | 'a' in ['a', 'b', 'c'] = True |
not in | list 내에 포함되지 않으면 Ture | 'a' not in ['a', 'b', 'c'] = False |
코드.. 코드를 보자!
Identify Operators
식별 연산자는 각 개체의 메모리 값과 위치를 식별해서 연산해준다
is | 개체메모리 위치나 값이 같으면 Ture | 10 is 10 --> True |
is not | 개체메모리 위치나 값이 다르면 Ture | "abc" is not "abc" --> False |
값은 알겠는데 위치는 뭔지 모르겠다
>>> 12 == 12.0
Ture
>>> 12 is 12.0
False
== 연산자는 단순히 값만 비교하기 때문에 참이라고 하지만
is 연산자는 12와 12.0의 객체 주소가 다르기 때문에 거짓이라는 결과가 나오는 것이다
12는 int형이고 12.0은 float형 자료이기 때문에 값은 같지만 메모리 위치는 다르다는 것이다
아래 예시를 보자
>>> a = 1
>>> b = a
>>> a is b
True
>>> a = 2
>>> a is b
False
물론 위 예시는 is를 쓰나 ==를 쓰나 결과가 같았겠지만
정수는 immutable 객체인 것을 설명하고 싶었다
그럼 아래의 리스트 예시를 보자
>>> a = [‘aa’]
>>> b = a
>>> a is b
True
>>> a[0] = [‘aaa’]
>>> a
[[‘aaa’]]
>>> b
[[‘aaa’]]
>>> a is b
True
이 경우에는 정수와 달리 원본도 같이 바뀌었다
리스트는 mutable 객체이기 때문에 원본도 같이 바뀐 것이다
mutable 객체인 리스트 등과 immutable 객체인 int, str, tuple 등등
변환이 가능한 객체이냐 아니냐 이게 무슨 차이가 있는지 무슨 의의를 갖는지는 별도의 포스팅으로 다루고
이 포스팅에서는 is 와 ==의 차이만 알았다면 충분하다!
'dev > python' 카테고리의 다른 글
[python] 함수 - 함수 기본 (0) | 2022.02.06 |
---|---|
[python] 문자열 포매팅 (0) | 2022.02.06 |
[python] 기본 연산자(4) - 논리 연산자, 비트 연산자 (0) | 2022.02.06 |
[python] 기본 연산자(3) - 할당 연산자 (0) | 2022.02.04 |
[python] 기본 연산자(2) - 비교 연산자 (0) | 2022.02.04 |