본문 바로가기
프로그래밍/파이썬 문법

호기심 파이썬(산술 연산자와 변수의 개념)

by 인성패밀리 2022. 4. 8.
반응형

컴퓨터가 등장하게 된 배경은 계산을 빠르게 하기 위해서 등장했습니다.

 

따라서 연산을 할 수 있는 연산자가 중요한데 지금부터 연산자에 대해서 알아보겠습니다.

 

우리가 일상적으로 사용하고 있는 사칙연산자. 더하기, 빼기, 곱하기, 나누기

 

파이썬에서는 다음과 같은 기호로 표현하고 있습니다.

 

+ 더하기
- 빼기
* 곱하기
/ 나누기

 

이 연산자들은 피 연산자가 양쪽에 두 개 필요합니다. 당연히 피연산자가 없으면 코드에서 에러가 발생합니다.

 

이 연산자들을 모르는 사람은 거의 없을 것으로 생각됩니다.

 

다음 소개할 연산자들은 코딩이 처음이라면 생소할 수도 있는 연산자입니다.

 

//
% 나머지
** 거듭제곱

 

실제로 사용해보겠습니다.

 

실행 환경은 파이썬 기본 개발환경인 IDLE 쉘 환경입니다.

8 // 2 는 8 / 2를 했을 때 몫을 말합니다.

8 % 3 은 8 / 3을 했을 때 나머지를 의미합니다.

2 ** 10 은 2의 10제곱을 말합니다.

 

위의 3가지 연산자들은 코딩이 처음이시라면 반드시 외우고 있어야하는 연산자들입니다.

아주 요긴하게 쓰일 것입니다.

 

 

 

다음으로 소개할 내용은 변수입니다.

 

변수의 개념은 제가 배웠던 교육과정 상 미지수 x에 대해서 학습했던 중등 교과과정에 처음 등장하는 단어였습니다. 

컴퓨터에서의 변수는 데이터를 담을 저장 공간입니다.

 

그래서 데이터를 담는 과정을 코드로 표현하면 다음과 같습니다.

 

쉘 환경에서는 변수 안의 내용을 보고 싶으면 그냥 변수 이름을 작성 후 엔터를 누르면 된다.

이와 같이 x = 1 이라 작성하면 수학에서 사용하던 것처럼 ' x와 1은 같다. ' 라는 표현이 아니라

' x라는 이름의 변수에 1을 저장한다. ' 라고 읽습니다.

 

그렇다면 여기서 알 수 있는 부분은 등호( = )가 같다를 의미하는 것이 아니라 '저장한다' 를 의미하는 것을 알 수 있습니다. 파이썬에서 같다를 의미하는 연산자는 따로 있습니다.

 

위에서 소개했던 +, -, *, / , //, %, ** 연산자들 말고도 여러가지 연산자가 있는데 위에서 소개한 연산자들을 가지고 산술 연산자 라고도 부릅니다.

 

등호 또한 연산자입니다. 할당 연산자 또는 대입 연산자라고 읽습니다. 사실 이름이 그렇다는 것이고, 이름을 아는 것도 물론 필요하지만 정확한 기능을 아는 것이 더욱 더 중요합니다.

 

등호는 무조건 오른쪽에 있는 데이터를 우선 처리한 후 변수로 저장하게 됩니다.

 

아래의 코드를 보도록 하겠습니다.

일반적인 수학 식처럼 연산을 할 때 우선순위 그대로 적용됩니다.

위의 코드의 동작과정을 보면 

ⓐ a = ((4+5)*2-10)*0

ⓑ a = (9*2-10)*0

ⓒ a = (18-10)*0

ⓓ a = 8*0

ⓔ a = 8

ⓕ a에 8을 저장

이와 같은 순서대로 등호의 오른쪽에 있는 데이터를 우선 처리 후 마지막 과정으로 변수 a에 8이 저장되는 것입니다.

 

(※ 참고로 컴퓨터가 수학식을 계산하는 방법은 위와 같은 동작과정을 거치지 않고 일반적인 식을 후위표기식이라는 것으로 변환 후 연산을 하게 됩니다. 이 과정은 문법 설명이 끝나면 추후 기재하도록 하겠습니다.)

 

이러한 과정 때문에 다음의 이상한 코드가 정상동작 할 수 있습니다.

수학적으로 보면 아주 아주 이상한 식이다.

y = 5 라는 말은 위의 과정에서 충분히 이해를 했을 것이라 생각합니다.

그런데 y = y + 1 ?

등호는 오른쪽의 데이터를 먼저 처리한다고 했으니 우선 오른쪽을 집중적으로 바라보겠습니다.

 

오른쪽 부분을 보면 y + 1 현재 y에 저장되어 있는 값이 5입니다. 즉 y + 1 은 5 + 1입니다. 최종적으로 오른쪽의 데이터는 6이 되었습니다. 그런데 y에 5가 저장되어 있는 상태입니다. 등호는 저장을 해주는 역할을 하니까 현재 저장되어 있는 5 대신에 6이 저장되게 됩니다. 해당 표현은 자주 자주 사용되니 확실히 이해하면 좋습니다.

반응형

댓글