연산자란?
- 프로그램에서 컴퓨터가 수행할 때 연산이 필요합니다.
- 이때 필요한 기본 단위를 연산자라 말합니다.
기본 연산자의 종류
파이썬에서의 연산자의 종류는 다음과 같습니다.
- 산술 연산자
- 비교 연산자
- 논리 연산자
- 비트 연산자
- 멤버십 검사 연산자
- 식별 연산자
산술 연산자
우리가 수학 시간에 배웠던 사칙 연산과 연관된 연산자 들입니다.
연산자 | 의미 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
% | 나머지 |
** | 제곱 |
// | 몫 |
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 |