Python/기초문법

연산자(operator) - Python

너굴Dev 2021. 9. 29. 23:43

연산자란?

  • 프로그램에서 컴퓨터가 수행할 때 연산이 필요합니다.
  • 이때 필요한 기본 단위를 연산자라 말합니다.

기본 연산자의 종류

파이썬에서의 연산자의 종류는 다음과 같습니다.

  • 산술 연산자
  • 비교 연산자
  • 논리 연산자
  • 비트 연산자
  • 멤버십 검사 연산자
  • 식별 연산자

산술 연산자

우리가 수학 시간에 배웠던 사칙 연산과 연관된 연산자 들입니다.

연산자 의미
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지
** 제곱
//
a = 29
b = 2

plus = a + b
print(a, "+", b, "=", plus)

minus = a - b
print(a, "-", b, "=", minus)

multiple = a * b
print(a, "*", b, "=", multiple)

division = a / b
print(a, "/", b, "=", division)

remainder = a % b
print(a, "%", b, "=", remainder)

exponentiation = a ** b
print(a, "**", b, "=", exponentiation)

floor_division = a // b
print(a, "//", b, "=", floor_division)

비교연산자

양쪽의 값을 비교해 참(True)과 거짓(False)을 구분하기 위한 연산자 입니다.

  • 아래 연산자 표에서 왼쪽을 기준으로 오른쪽을 비교한다고 생각하세요!
연산자 의미
== 동일하다
!= 동일하지 않다
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다

 

a = 29
b = 3

print(a, "==", b, a == b)
print(a, "!=", b, a != b)
print(a, ">", b, a > b)
print(a, "<", b, a < b)
print(a, ">=", b, a >= b)
print(a, "<=", b, a <= b)

할당 연산자

변수에 값을 넣는 연산자입니다.

연산자 의미
= 왼쪽의 변수에 오른쪽 값을 넣는다.
+= 왼쪽의 변수의 값에 오른쪽 값을 더한 결과값을 다시 왼쪽 변수에 넣는다.
-= 왼쪽의 변수의 값에 오른쪽 값을 뺀 결과값을 다시 왼쪽 변수에 넣는다.
*= 왼쪽의 변수의 값에 오른쪽 값을 곱한 결과값을 다시 왼쪽 변수에 넣는다.
/= 왼쪽의 변수의 값에 오른쪽 값을 나눈 결과값을 다시 왼쪽 변수에 넣는다.
%= 왼쪽의 변수의 값에 오른쪽 값을 나눈 나머지값을 얻은 결과값을 다시 왼쪽 변수에 넣는다.
//= 왼쪽의 변수의 값에 오른쪽 값을 나눈 몫을 얻은 결과값을 다시 왼쪽 변수에 넣는다.
**= 왼쪽의 변수의 값에 오른쪽 값 만큼 제곱을 한 결과값을 다시 왼쪽 변수에 넣는다.
a = 50
b = 3

x = a 
print("x = a, x =", a)

x += b
print("x += b, x =", x)

x -= b
print("x -= b, x =", x)

x *= b
print("x *= b, x =", x)

x /= b
print("x /= b, x =", x)

x //= b
print("x //= b, x =", x)

x %= b
print("x %= b, x =", x)

x **= b
print("x **= b, x =", x)

논리연산자

논리식을 판단하여 참인지 거짓인지 연산합니다.

연산자 의미
and 둘다 참일 경우만 참
or 둘 중 하나만 참이어도 참
not 참 -> 거짓, 거짓 -> 참 으로 반전 시킴
x = 10
y = 12
print("==== and ====")
print("x < y and y > x ", x < y and y > x)
print("x == y and y < x ", x == y and y > x)
print("x == y and y < x ", x == y and y < x)
print("\n")

print("==== or ====")
print("x < y or y > x ", x < y or y > x)
print("x < y or y > x ", x < y or y < x)
print("x == y or y < x ", x == y or y < x)
print("\n")

print("==== not ====")
print("not (x > y) ", not (x > y))

 

비트연산자

비트 단위로 논리 연산을 할 때 사용합니다.

연산자 의미
& AND 연산. 각 대응되는 비트가 둘다 1(참)일 경우에는 1(참)이고 아닐경우 0(거짓)
| OR 연산. 각 대응되는 비트가 둘중 하나만 1(참)이라도 1(참)이고 둘다 0(거짓)일 경우 0(거짓)
^ XOR 연산. 각 대응되는 비트가 둘중 하나만 1(참)일 경우 1(참)이고 아닐경우 0(거짓)
~ invert 연산. 비트가 1인경우 0으로 0일경우 1로 변경.
파이썬에서는 ~ 연산자는 그 정수 인자의 비트 반전된 값을 준다.
x 의 비트 반전은 -(x+1) 로 정의된다.
오직 정수에만 적용.
https://docs.python.org/ko/3/reference/expressions.html#binary-bitwise-operations
<< 왼쪽 씨프트. 변수의 값을 지정된 수만큼 왼쪽으로 비트를 이동한다
>> 오른쪽 씨프트. 변수의 값을 지정된 수만큼 오른쪽으로 비트를 이동한다
a = 3 # 0000 0011
b = 9 # 0000 1001

print("AND 연산")
print(a & b)
# 0000 0011
# 0000 1001
# 0000 0001 <- a & b
print("======\n")


print("OR 연산")
print(a | b)
# 0000 0011
# 0000 1001
# 0000 1011 <- a | b
print("======\n")

print("XOR 연산")
print(a ^ b)
# 0000 0011
# 0000 1001
# 0000 1010 <- a ^ b
print("======\n")

print("Invert 연산")
print(~a)
# 0000 0011
# 1111 1100 <- 이어야 할것 같지만 파이썬에서 처리하는 방식은 아래와 같다
# - (입력값 + 1)
print(bin(~0b0010))
print(~0b0010)
print("======\n")

print("left shift 연산")
print(a << 2)
# 0000 0011
# 0000 1100 <- 왼쪽으로 두칸 민것. 빈칸은 0으로 채운다
print("======\n")

print("right shift 연산")
print(a >> 1)
# 0000 0011
# 0000 0001 <- 오른쪽으로 1칸 민것

멤버십 검사 연산자

안에 특정 값이 있는지 검사하는 연산자 입니다.

  • 딕셔너리, 리스트 등 파이썬의 모든 내장 시퀀스들과 집합 형들이 이 연산자를 지원합니다.
연산자 의미
in 안에 포함 되어 있으면 참
not in 안에 포함 되어 있지 않으면 참

 

num_list = [0,10,50,200]
a = 10
b = -10

print(a in num_list)
print(b in num_list)

 

식별 연산자

두 객체의 아이덴티티(메모리 주소)를 비교하는 연산자 입니다

연산자 의미
is 두 객체의 메모리 주소가 같으면 참
is not 두 객체의 메모리 주소가 다르면 참
a = 256
b = 256
c = a
print(a is b)
print(a is c)
print(a is not b)

# 여기에서 is 연산자가 값이 같으면 True를 반환하는것으로 생각할 수 있다.
# 하지만 python에서는 -5부터 256까지는 이미 객체를 만들어 메모리에 넣어 놓기 때문에 나타나는 현상이다.
# 아래와 같이 테스트를 해보면 메모리 주소를 비교하는것을 확인할 수 잇다.
print("\n")
print("-5~256 범위 외 비교")

d = 257
e = 257
f = d
print(d is e)
print(d is f)
print(d is not e)

'Python > 기초문법' 카테고리의 다른 글

리스트를 사용할 때 자주 사용하는 메서드와 함수  (0) 2021.09.30
자료구조 - Python  (0) 2021.09.30
함수(function) - Python  (0) 2021.09.30
조건문(control flow) - Python  (0) 2021.09.29
변수(variable) - Python  (0) 2021.09.29