1 파이썬에서 계산이란 무엇인가?
- 파이썬에서 계산은 동작이 아니라 평가
- 계산이 일어나면 항상 계산 과정은 남지 않고 하나의 값이 만들어짐
- 결과는 사용될 수도 있고, 사용되지 않을 수도 있지만 반드시 존재함
2 모든 계산 결과는 '값'이다
- 계산식은 실행되는 순간 값 하나로 바뀜
- 파이썬은 계산식과 값을 구분하지 않아서 값이 필요한 자리에 계산식도 그대로 올 수 있음
3 모든 값에는 반드시 타입이 있다
- 파이썬의 값은 항상 데이터(실제 내용)와 타입(값의 성격)을 함께 가짐
- 숫자도 예외 없이 타입을 가지며, 겉으로 같아 보여도 타입이 다를 수 있음
- 파이썬은 모양이 아니라 타입으로 판단함
4 숫자 자료형은 계산을 위해 존재한다
- 계산을 하려면 계산 가능한 형태(int, float)의 값이 필요함
- 숫자 자료형이 먼저 있고, 그 위에서 계산이 가능해짐
5 산술 연산자의 기본 구조
값 연산자 값
- 모든 산술 연산은 위의 형태이며, 결과는 항상 하나의 값
- 연산자는 주인공이 아니라 값 사이의 관계를 표현하는 기호
6 기본 산술 연산자 핵심 규칙
- 덧셈(+)은 순서가 상관 없음
- 뺄셈(-)은 왼쪽을 기준으로 계산하므로, 순서가 중요함
- 곱셈(*)은 정수, 실수, 음수 모두 가능하며, 반복 덧셈은 비유일 뿐
- 나눗셈(/)은 항상 float 결과
7 목 //과 나머지 %
- //은 항상 내림된 몫이며, %는 나머지
a == (a // b) * b + (a % b)
- 항상 위의 공식이 성립함
- 음수가 포함돼도 이 공식은 유지됨
- %의 부호는 나누는 수(b)를 따름
8 거듭제곱 **
a ** b
- 지수가 0이면 항상 결과는 1
- 지수가 음수면 결과는 역수
- 지수가 실수면 근
- b가 2이면 제곱, b가 0.5이면 제곱근, b가 -1이면 역수
9 연산자 우선순위와 괄호
- 파이썬은 괄호, 연산자 우선순위, 결합 방향 순서로 계산함
- 결합 방향은 **만 오른쪽에서 왼쪽으로 계산하고, 대부분은 왼쪽에서 오른쪽으로 계산함
- 괄호는 규칙을 무시하는 게 아니라 '이걸 먼저 하나의 값으로 만들어라'는 표시
10 단항 연산자와 음수
- 단항 연산자는 값 하나에 작용하여, -5는 계산 중이 아니라 완성된 값
- -는 값의 개수가 하나이며, 값 앞에 있으면 단항 연산자, 값의 개수가 2개이며, 값들 사이에 있으면 이항 연산자로 역할이 달라짐
1-1 코드
-5 # 단항 -
10 - 5 # 이항 -
11 변수와 대입
- 변수는 값이 아니라 값을 가리키는 이름으로, 현재 값만 가짐
- =는 '같다'가 아니라 대입이며, 오른쪽 계산이 먼저 끝난 뒤 저장됨
2-1 코드
x = x + 1 # 이전 값을 이용해 새 값 생성
12 복합 대입 연산자
- 새로운 연산이 아님
- 값이 갱신된다는 의도를 드러내는 문법으로, 누적, 변화가 중요할 때 사용함
3-1 코드
x += 1 # x = x + 1
13 산술 연산과 타입 변환
- 계산은 항상 값 + 타입을 만듦
- 자동 타입 변환은 서로 다른 숫자 타입 계산 시 변환되며, 아래 표현 범위가 기준
bool -> int -> float -> complex
- 명시적 타입 변환은 개발자가 직접 의도를 고정하며, 새 값을 만들 뿐, 원본은 바뀌지 않음
14 실수(float)의 한계
4-1 코드
0.1 + 0.2 # 0.30000000000000004
- 위 코드는 2진수 표현의 구조적 한계일 뿐 오류가 아님
- 오차는 계산이 아니라 저장 시점에서 발생하며, 출력 값과 내부 저장 값이 틀릴 수 있음
- 실수 비교, 조건 판단에서 특히 주의해야 함
15 산술 연산을 이해하는 핵심 관점
- 계산은 즉시 일어나며, 변수는 결과 값만 저장함
- 계산식은 어디든 값처럼 사용이 가능하며, 연산자와 함수는 모두 값 생성 도구
16 초보자가 반드시 피해야 할 실수 요약
- 감으로 결과를 판단하기
- /를 몫으로 착각하기
- 왼쪽으로 계산한다고 믿기
- 같은 기호는 같은 의미라고 생각하기
- 변수가 과정을 기억한다고 착각하기
- 계산을 한 줄로 몰아쓰기
- 결과만 맞으면 이해한다고 착각하기
Python 산술 연산자에 대해 더 상세한 설명을 원하는 분들은 아래 사이트에 접속하기
Python 산술 연산자 뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기