Stargazer

[Python] 파이썬 강좌 (1) - 변수 (강좌/강의) 본문

프로그래밍/Python

[Python] 파이썬 강좌 (1) - 변수 (강좌/강의)

COM2IT 2018. 2. 5. 17:55
반응형




안녕하세요? 모두를 위한 IT세상 IT알리미입니다.


이번 파이썬 강좌 시간에는 변수라는 것을 배워 보겠습니다.

이번 시간부터 시작메뉴 > python3.6 >IDLE 켜서 실습을 준비하십시오.

혹은 파이참을 설치해서 사용하십시오.



변수는 말그대로 변하는 수 입니다.

변수내의 저장된 값을 마음대로 변하게 할 수 있습니다.


변수의 선언과 대입은 다음과 같습니다.


변수명 = 변수에 저장할 값


변수에 저장할 값에 들어가는 것은 자료형이라는 것이 있는데

자료형은 다음 시간에 배워보도록 하겠습니다.
지금은 자료형을 데이터의 형태라고 해두겠습니다.


사용법은 변수명은 예약어(def, return 등),띄어쓰기를 제외하고 원하시는 이름으로 작성하시고,  값은 숫자, 문자, 리스트, 튜플, 딕셔너리등의 자료형을 넣으시면 됩니다.


예를 들면


1
2
3
= 1
= "Hello world"
= [1,2,3]
cs

이런식으로 사용합니다.

한번 IDLE에 입력해보시고

a,b,c를 각각 입력하고 엔터해보십시오.

그럼 각각에 저장된 값을 보여줍니다.


가볍게 변수를 이용해서 계산을 해보도록 하겠습니다.


1
2
3
4
5
6
= 3
= 5
a+b
 
>> 8
 
cs


a+b를 입력하면 더하기가 됩니다.

다른 사칙연산도 마찬가지입니다.

+ (덧셈), - (뺄셈), * (곱셈), / (나눗셈) 하나씩 다 시도 해보십시오.


변수 정의할 때 사용하는 =기호"같다" 기호가 아니라 "대입한다"라는 뜻입니다.

즉, 왼쪽에 오른쪽 값을 대입한다라는 의미입니다.

a=3후에 a=5라 하면 원래 것 3은 지워지고 5가 들어갑니다.


솔직히 말하자면

변수는 사용법만 알면 파이썬에서 프로그래밍하면서 문제되는 경우는 얼마 없지만

몇몇 변수에서 생기는 문제 때문에 개념을 알아두어야 합니다.


변수의 개념


변수를 사용할때는 변수라는 상자에 값이 들어간다고 생각하면 편합니다.

그런데 실제 개념은 아닙니다.


파이썬에서 변수의 개념은 다음과 같습니다.


예를 들어 a = 3이라고 하면,

"변수 a라는 놈이 3이라는 객체를 가리킨다."라고합니다.


a는 참조자, 3은 실질값인 셈입니다.

a-->3

그림으로 대충 설명하자면 다음과 같습니다.



하지만 이는 정확한 개념은 아닙니다.

다른 언어에서 사용하는 포인터라는 개념이 사용해서,

조금 어렵지만, 좀 더 설명하겠습니다.



"객체가 저장된 메모리의 주소(위치)를 가리키는 레퍼런스(Reference) a는

3이라는 정수형 객체의 주소를 가리킨다."


꽤나 전문적인 용어를 남발하면서 머릿속을 어지럽힙니다.


비유적으로 설명하겠습니다.


저는 붕어빵 장사꾼(메모리) 입니다.

저는 붕어빵 틀(메모리 주소)이 1부터 1000번째까지 있습니다.

제가 붕어빵 반죽(실질적인 데이터)을 245번째에 붓습니다.

손님 a(변수)가 2번째 자리 앞에 옵니다.

와서 245번째 붕어빵 틀(실질적 데이터가 든 메모리)을 달라고 가리킵니다.


좀 감이 오십니까?


변수 a와 3은 메모리 어딘가에는 존재합니다.

그리고 변수 a는 실질적인 값 3이 들어있는 메모리의 주소의 값을 가지고 있다는 말입니다.


(주의: 괜히 머릿속 아프기 싫은 분들은 변수 개념 심화를 넘어가십시오.

추후에 필요한 개념이 있으면 필요할 때 추가 설명하겠습니다.)


변수 개념 심화


그럼 좀 더 심화 시키겠습니다.

과연 a=3, b=3일때 a와 b는 같은 3을 가리킬까요?


원래는 다른 객체를 선언하여 다른 메모리에 넣은 것이므로 같은 3은 아닌게 정상입니다.

하지만 실제로는 파이썬 내부에서 미리 정해놓은 객체중에 3이란게 존재합니다.

그래서 메모리 절약 차원에서 같은 객체 3을 가리키게 해서

실제로 a,b 는 서로 같은 객체를 가리킵니다.


같은 객체인지 확인하는 명령은 is입니다.


1
2
3
4
a=3
b=3
is b
>> True
cs

True는 참 False는 거짓의 값을 의미합니다.

위에서 결과가 True 이므로 a와b는 같은 객체를 가리킵니다.


a=12345,b=12345 같은 경우들은 위 경우와 다릅니다.

파이썬에서 미리 만들어져 있지 않은 경우라

파이썬이 인식을 하지못해 서로 다른 객체를 선언하여

다른 곳에 값이 들어갑니다.

원래는 아래와 같습니다.


1
2
3
4
a=12345
b=12345
is b
>> False
cs


그럼 여기서 a=3, b=a라하면

a와 b는 같은 객체를 가리킵니까?

맞습니다.

a is b 에 값은 true가 나옵니다.


근데 a=5라고 하면, 과연 b=5 일까

하지만 여기서 파이썬은 변수a가 따로 값을 대입받는다고 판단,

b를 유지하고, a만 변하게 하여

결과는 a=5,b=3 이라고 합니다.

즉, a=5라고 하면 새로운 객체 5를 만들고,

그 객체 5의 주소를 변수 a가 가리키게 되는 것이죠.

즉, a=5라고 하는것은 b=5와 같지 않음을 알 수 있습니다.

대입연산자 때문이기도 합니다.



변수 사용법 심화


변수를 사용하는 방법에는 여러가지가 있습니다.


a=3, b=5라 하고, 서로 바꾸고 싶을 때는

a,b = b,a라 하면 b=5, a=3 가 됩니다.


a=b=1라 하면 a=1,b=1이 됩니다.

아까 말했듯이 =은 대입 연산자이므로 a=1=b 같은 형식은 안됩니다.

왜냐하면 1은 상수이므로 1에 b를 대입할 수 없기 때문입니다.

(대입은 가장 오른쪽을 가장 왼쪽 끝까지 전부 대입하는 방식이기 때문입니다.)


만든 변수를 없애는 방법은

del(변수)입니다.

del(a), del(b)

이런식으로 사용합니다.


숙제


문제1. 변수 a,b 에 각각 2,6을 대입하고, a=b라 했다면, a와 b의 값은?

문제2. 변수 a=1, b=5일때 d = c = a+b 라하면 d와 c의 값은?

심화 문제1. 변수 a=1777,b=1777이면 a is b 은 False 인가?

심화 문제2. 변수 a=4, b=a라하고 b=3이라 하면 a는 몇 인가?



이상으로 파이썬 강좌(1) - 변수를 마칩니다.

다음강좌 파이썬 강좌(2) - 자료형에서 뵙겠습니다.


궁금한 내용은 덧글로 질문을 올려 주세요!

자세히 설명 드리겠습니다.



공감과 덧글은 제게 큰 힘이 됩니다!

로그인이 필요없으니 한번만 눌러주세요!


공감


반응형
Comments