| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 파이팅
- GPT
- 파이선
- SSH Tunnel
- 이터널리턴
- psycopg
- chartjs-chart-financial
- RDS
- django db with ssh tunnel
- AWS
- 아나콘다
- postgres
- 오픈빌더
- vue
- 파이썬
- vpc
- Django
- subnet
- Python
- settings.py
- database
- 따라하며 배우는 파이썬과 데이터 과학
- Chatbot
- 파이참
- pycharm
- 개발일지
- ec2
- 챗봇
- 장고
- Today
- Total
우아한 개발계발 블로그
따라하며 배우는 파이썬과 데이터 과학 (3) - 연산자로 연산을 해 보자 본문
2021.05.28 - [Study/따라하며 배우는 파이썬과 데이터 과학] - 따라하며 배우는 파이썬과 데이터 과학 (2) - 값을 담아 다루어 보자
우리는 지난 글에서 데이터를 담을 수 있는 변수를 알아봤다.
이제 이 변수를 지지고 볶을 수 있는 연산을 해보기 위해 '연산자'라는 것을 알아볼 것이다.
3.1 수식
연산자에 대해 알고가기 전에 연산자가 왜, 어디에 쓰이는 지를 먼저 알아보면 좋을 것 같다.
우리가 마주하는 모니터나 키보드, 마우스 등의 입출력 처리든 게임의 실행이든 모두 컴퓨터의 계산으로 이루어진다.
에초에 컴퓨터의 어원인 Compute는 계산하다 라는 의미를 갖고있다. 계산을 위해 태어난 기계이니까. 그래서 우리는 컴퓨터를 마주할 때 계산(연산)을 빼놓을 수 없다.
연산을 하기위해서 연산을 하기 전에 우리는 '수식'을 먼저 마주해야한다.
무엇을 어떻게 연산할지를 알기 위해서 수식을 보는 것이다. 우리는 주로 수학을 공부할 때 수식을 사용하곤 했는데, 이는 프로그래밍할 때에도 필히 쓰인다.
수식을 올바르게 작성할 수 있다면 컴퓨터는 더욱 효율적인 연산을 할 수 있을 것이고 코드의 길이도 간결하게 할 수 있다. 이로인해 우리는 자원관리라는 이점을 얻을 수 있다!
그럼 우리의 목표는 효율적인 연산을 위한 수식을 세우는 것이라고 생각할 수 있다. 연산은 우리가 생각할 필요가 없다.
어차피 컴퓨터가 알아서 할 것이니까. 우리는 정확한 답을 위한 수식과 자원관리만을 생각하면 된다.
그래서 우리는 우리의 목표를 위해서 다양한 연산자들을 알아볼 것이다.
그리고 책의 내용을 빌리자면
수학의 수식과 프로그래밍의 수식은 다른 개념이다
수학의 수식은 수학적 표기법과 기호를 이용하여 수학적 개념을 표현하는 것이다. 수식을 통해 우리는 수식 내의 기호들이 표현하는 수학적 대상들의 관계를 파악할 수 있다.
컴퓨터 과학분야의 프로그래밍에서 사용하는 수식은 수학적 관계를 나타내는 것이 아니라 하나의 값으로 평가될 수 있는 표현을 의미한다. 예를 들어 7*7+1 이라는 표현은 50 이라는 값으로평가될 수 있는 수식이다.
3.2 할당 연산자
우리는 이전 글에서 이미 '=' 연산자라는를 하나 사용했다. 우리는 앞으로 '='를 등호라 부르지 않고 '할당연산자'라는 말로 부를 것이다. 대입 연산자라고 부르기도 하는데, 이 연산자는 =를 기준으로 (A = B라고 할 때) A의 이름을 갖는 변수에(없다면 만들고) B를 넣는다(할당, 대입한다)라는 의미를 갖는다.
x = 10 # x 라는 이름을 갖는 변수에 10 이라는 값(데이터)가 저장됨
파이썬은 또 편한게 '다중 할당문' 과 '동시 할당문' 이라는 개념이 존재한다.
아래 코드를 보자
>>> x = y = 10 # 여러 변수에 동일한 값을 할당하는 다중 할당문
>>> x
10
>>> y
10
>>> x, y = 10, 20 # 여러 변수에 동시에 다양한 값을 할당하는 동시 할당문
>>> x
10
>>> y
20
>>>
인터프리터에 하나하나 따라쳐보자. 처음 x = y = 10 에서는 x, y에 각각 10 이 할당된 것을 확인할 수 있고,
x, y = 10,20 은 x, y에 각각 10과 20이 할당된 것을 확인할 수 있다. 이것을 통해 코드를 간결하게 할 수 있고.
두 변수의 값을 바꾸는데에도 이용할 수 있다.
x , y = 10, 20
print(x,y)
x, y = y, x
print(x,y)
위의 코드를 인터프리터에 입력해보고 x와 y의 값을 출력하여 확인해보면 x와 y의 값이 서로 바뀐 것을 알 수 있다.
다른 언어(C, Java 등) 에서는 서로 다른 변수의 값을 바꾸려면 XOR연산을 이용하는게 아닌 이상 둘 중 하나의 값을 임시로 저장할 변수가 꼭 필요하다. 하지만 파이썬에서는 XOR 연산 조차도 필요없다!
3.3 산술 연산자
아래엔 파이썬에서 쓰이는 '산술 연산자'들의 목록이다 앞에서 외웠던것도 포함되어 있으니 더 외우기 쉬울 것이다.
| 연산자 | 기호 | 사용 예시 | 결과값 |
| 덧셈 | + | 11 + 2 | 11 |
| 뺄셈 | - | 11 - 2 | 9 |
| 곱셈 | * | 11 * 2 | 22 |
| 지수 | ** | 11 ** 2 | 121 |
| 나눗셈(정수 나눗셈의 몫) | // | 11 // 2 | 5 |
| 나눗셈(실수 나눗셈의 몫) | / | 11 / 2 | 5.5 |
| 나머지 | % | 11 % 2 | 1 |
3.4 비트 연산자
다음로는 '비트 연산자' 들으 목록이다. 실상 자주 사용되지는 않는데 그래도 알아두면 좋다.
| 연산자 | 의미 | 설명 | |
| & | 비트 단위 AND | 두 개의 피연산자의 해당 비트가 모두 1 이면 1, 아니면 0 | |
| | | 비트 단위 OR | 두 피연산자의 해당 비트 중 하나라도 1이면 1, 아니면 0 | |
| ^ | 비트 단위 XOR | 두 개의 피연산자의 해당 비트의 값이 같으면 0 , 아니면 1 | |
| ~ | 비트 단위 NOT | 0은 1로 만들고, 1은 0으로 만든다. | |
| << | 비트 단위 왼쪽으로 이동 | 지정된 개수만큼 모든 비트를 왼쪽으로 이동시킨다. | |
| >> | 비트 단위 오른쪽으로 이동 | 지정된 개수만큼 모든 비트를 오른쪽으로 이동시킨다. | |
3.5 복합 할당 연산자
그 다음으로는 '복합 할당 연산자' 들의 목록이다. 기존의 수식을 아래의 형태로 줄이는데 이 연산자는 정말편하다.
문자하나를 덜 쓸 수 있다! 이게 얼마나 큰 장점이냐고 묻겠냐마는 이는 하다보면 체감하게 될 것 이다.
| 연산자 | 사용 예시 | 의미 | |
| += | i += 1 | i = i + 1 | |
| -= | i -= 1 | i = i - 1 | |
| *= | i * = 1 | i = i * 1 | |
| **= | i **= 1 | i = i ** 1 | |
| /= | i /= 1 | i = i / 1 | |
| //= | i //= 1 | i = i // 1 | |
| %= | i %= 1 | i = i % 1 | |
| &= | i &= 1 | i = i & 1 | |
| |= | i |= 1 | i = i | 1 | |
| ^= | i ^= 1 | i = i ^ 1 | |
| <<= | i <<= 1 | i = i << 1 | |
| >>= | i >>= 1 | i = i >> 1 | |
딱히 크게 복잡한 것은 없다. 결과를 저장하는 변수와 피연산자의 변수가 같을 때 이렇게 축약할 수 있다는 것이다.
※단 주의할 점이 있다. 복합할당연산자는 변수가 정의되기 전에 사용하지 못한다.
의미만봐도 알 수 있는데 i 가 정의되지 않았는데 i를 이용한 할 수 있을리가 만무하다.
3.6 논리 연산자
마지막으로 '논리 연산자'이다. 이는 몇가지를 제외하고 수학에서 사용하는 것과 비슷하니 이것도 쉽게 외울 수 있다.
| 연산자 | 설명 |
| == | 두 피연산자의 값이 같으면 True 반환 |
| != | 두 피연산자의 값이 다르면 True 반환 |
| > | 왼쪽 피연산자가 오른쪽 피연산자보다 클 경우 True 반환 |
| < | 왼쪽 피연산자가 오른쪽 피연산자보다 작을 경우 True 반환 |
| >= | 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같을 경우 True 반환 |
| <= | 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같을 경우 True 반환 |
| is | 두 피연산자의 값뿐만 아니라 오브젝트가 같으면 True 반환 |
is 에 대한 설명은 [이쪽 블로그]를 참고하자
그리고
| 연산자 | 의미 |
| x and y | x 와 y중 거짓(False)이 하나라도 있으면 거짓이 되며 모두 참(True)인 경우에만 참이다. |
| x or y | x 와 y중에서 하나라도 참이면 참이되며, 모두 거짓일 떄만 거짓이 된다. |
| x not y | x가 참이면 거짓, x가 거짓이면 참이된다. |
3.7 연산자 우선순위
마지막 표는 각 연산자들의 우선순위들을 나타낸 것이다.
파이썬은 C언어와 같은 전처리/후처리 연산자 등의 문제가 없긴하지만 그래도 알고 있으면 논리, 조건식을 작성할 때 도움이 되니 참고만 하자
| 우선순위 | 연산자 | 설명 |
| 1 | ** | 지수 연산자 |
| 2 | +, -, ~ | 단항 덧셈(양의 부호), 단항 뺄셈(음의 부호), 비트 NOT |
| 3 | *, /, //, % | 곱셈, 나눗셈, 버림 나눗셈, 나머지 |
| 4 | +, - | 덧셈, 뺄셈 |
| 5 | <<, >> | 비트 시프트 연산자 |
| 6 | & | 비트 AND 연산자 |
| 7 | ^ | 비트 XOR 연산자 |
| 8 | | | 비트 OR 연산자 |
| 9 | <, <=, >, >= |
비교 연산자 |
| 10 | !=, == | 동등 연산자 |
| 11 | =, %=, /=, //=, -=, +=, *=, **= | 할당 연산자, 복합 할당 연산자 |
| 12 | is, is not |
아이덴티티 연산자 |
| 13 | in, not in | 소속 연산자 |
| 14 | not | 논리 NOT |
| 15 | and | 논리 AND |
| 16 | or | 논리 OR |
이번 장에서는 연산자에 대해 다뤄봤다. 어려울 것 없다. 기억이 안나면 찾아보면된다.
다음 장에서는 꼭 파이썬에만 해당되는 것이 아닌 if 문에 대해 다뤄볼 것이다.
'Study > 따라하며 배우는 파이썬과 데이터 과학' 카테고리의 다른 글
| 따라하며 배우는 파이썬과 데이터 과학 (5) - 여러 번 반복하는 일을 하자 (0) | 2021.05.31 |
|---|---|
| 따라하며 배우는 파이썬과 데이터 과학 (4) - IF! 조건을 따져 실행해 보자 (0) | 2021.05.30 |
| 따라하며 배우는 파이썬과 데이터 과학 (2) - 값을 담아 다루어 보자 (1) | 2021.05.28 |
| 따라하며 배우는 파이썬과 데이터 과학 (1) - 파이썬 기초체력 다지기 (0) | 2021.05.28 |
| 따라하며 배우는 파이썬과 데이터 과학 (0) - 개발 준비 (0) | 2021.05.10 |