10. Python에서 제공하는 연산자

안녕하세요. 언휴예요.

 

이번에는 Python에서 제공하는 연산자들을 간략하게 살펴볼게요.

 

Python에서 제공하는 연산자 종류에는 산술, 비교, 대입, 논리, 비트, 멤버쉽, 참조 비교 연산자가 있어요. 여기에서는 간략하게 연산 기호와 예제를 보여줄게요.

 

  • 산술 연산자 (+, -, *, /, %, **, //)

+, -, *, /는 사칙 연산에 사용합니다. %는 나머지를 구할 때 사용하여 나머지 연산자라고 부릅니다. **는 지수 연산을 수행합니다. //는 Floor Division으로 소수점 이하 자릿수를 제거한 몫을 구하는 연산입니다. 예제 코드와 결과를 살펴보세요.

[그림 1] 산술 연산자
[그림 1] 산술 연산자
 

  • 비교 연산자(==, !=, >, <, >=, <=)

비교 연산자는 같음(==), 다름(!=), 크다(>), 작다(<), 크거나 같다(>=), 작거나 같다(<=)가 있습니다. ==, !=, >=, <=는 하나의 연산자이므로 사이에 공백이 올 수 없어요.

[그림 2] 비교 연산자
[그림 2] 비교 연산자
 

  • 대입 연산자(=, +=, -=, *=, /=, %=, **= //=)

대입 연산자는 좌항 표현으로 관리하는 메모리를 우항의 값으로 배정하는 연산자입니다. a+=b 는 a= a+b와 같은 표현이며 a-=b는 a=a-b와 같은 표현입니다. 이 외에도 같은 원리입니다.

[그림 3] 대입 연산자
[그림 3] 대입 연산자
 

  • 비트 연산자 (&, |, ^, ~, <<, >>)

비트 연산자는 비트 단위로 연산을 수행하며 비트 논리곱(&), 비트 논리합(|), 비트 상호배제(^), 비트 부정(~), 왼쪽 쉬프트(<<), 오른쪽 쉬프트(>>)가 있습니다.

비트 논리곱은 같은 자리가 모두 1일 때 해당 자리의 연산 결과가 1이며 그렇지 않을 때 0입니다. 예를 들어 a가 6이고 b가 3일 때 a&b는 2입니다. (110 & 011 => 010)

비트 논리합은 같은 자리에 하나라도 1이면 해당 자리의 연산 결과가 1이며 둘 다 0일 때만 0입니다. 예를 들어 a가 6이고 b가 3일 때 a|b는 7입니다.(110 | 011 => 111)

비트 상호배제는 같은 자리의 값이 서로 다르면 해당 자리의 연산 결과가 1이며 같을 때 0입니다. 예를 들어 a가 6이고 b가 3일 때 a^b는 5입니다.(110^011 => 101)

비트 부정은 0인 자리는 1로 1인 자리는 0으로 변환합니다.

왼쪽 쉬프트는 지정한 비트 수만큼 왼쪽으로 자리 이동하며 1자리 이동하면 2를 곱한 결과와 같습니다. 오른쪽 쉬프트는 지정한 비트 수만큼 오른쪽으로 자리 이동하며 1자리 이동하면 2로 나눈 결과와 같습니다.

[그림 4] 비트 연산자
[그림 4] 비트 연산자
 

  • 논리 연산자(and, or, not)

논리 연산자는 둘 다 참일 때 연산 결과가 참인 and, 하나라도 참일 때 연산 결과가 참인 or, 참이면 결과가 거짓이고 거짓일 때 결과가 참인 not이 있습니다.

[그림 5] 논리 연산자
[그림 5] 논리 연산자
 

  • 멤버쉽 연산자(in, not in)

Python에는 여러 개의 자료를 보관하는 컬렉션을 제공하고 있습니다. 그리고 멤버쉽 연산자는 특정 자료가 해당 컬렉션에 속하는지(in) 혹은 속하지 않는지(not in) 판별하는 연산자입니다. 컬렉션에 관한 사항은 별도로 다룰 거예요.

[그림 6] 멤버쉽 연산자
[그림 6] 멤버쉽 연산자
 

  • 참조 비교 연산자(is, is not)

Python에서 참조 비교 연산자에는 같다(is)와 같지 않다(is not)이 있습니다. 비교 연산자의 같다(==)와 같지 않다(!=)는 값이 같은지 판별하는 연산자입니다. 반면 참조 비교 연산자는 같은 메모리를 참조하는지 판별하는 연산자입니다. 정수나 실수 등의 값을 기억하는 형식에서는 비교 연산자와 참조 비교 연산자는 차이가 없습니다. 하지만 클래스처럼 참조 형식에서는 서로 다른 개체가 같은 값을 갖고 있을 때 차이가 발생합니다.

[그림 7] 참조 비교 연산자
[그림 7] 참조 비교 연산자