[References]
http://pythonstudy.xyz
변수(Variable)
임시로 또는 영구적으로 값을 기억해두기 위한 저장소
money = 1000
cookiePrice = 600
money = money - cookiePrice
print(money)
# 400
1. 변수는 어떠한 값에 이름표를 붙이는 것과 같다.
2. 변수를 정의할 때는 반드시 왼쪽에 변수명이 와야 한다.
1000 = money
SyntaxError: can't assign to literal
3. Python에서는 모든 것이 객체(Object)이다.
함수, Module, List, Tuple 등 모든 것은 객체
money = 1000
cookiePrice = 600
위 Code의 1행을 보면, 변수 money와 1000이라는 값을 지닌 객체가 만들어진다. 사실은 1000이란 값이 그대로 money에 대입이 되어 money가 1000이란 값을 지니는 게 아니라 1000이라는 값을 지닌 객체가 새로 만들어지고 그 객체가 저장되어 있는 공간에 money라는 이름표를 붙이는 것이다. 즉, 변수 money는 직접적으로 1000이란 값을 가지고 있는 것이 아니라 1000이라는 값이 저장되어 있는 공간의 주소를 담고 있는 것이라 할 수 있다. 2행도 마찬가지로 cookiePrice라는 변수가 600이라는 값을 지닌 객체가 저장된 공간을 가리키는 것이라고 할 수 있다.
위 그림의 Code 영역에 있는 Code에 의해 메모리 영역에서는 변수 x, y, z가 만들어지고, 객체 3과 5가 만들어지게 된다. 여기서 x, y는 동일하게 3이라는 값을 가진 객체를 가리키게 되고 z는 5라는 값을 가진 객체를 가리키게 된다. 만약 y에 4를 넣으려고 한다면 더 이상 객체 3을 가리키는 게 아니라 새로운 객체 4를 가리키게 된다.
Python 내에는 id라는 내장 함수가 존재하고 이 id라는 함수는 객체의 주소를 돌려준다.
x = 3
y = 3
z = 5
print(id(x), id(y), id(3), id(z), id(5))
# 1760245552 1760245552 1760245552 1760245584 1760245584
위 Code의 결과를 보면 변수 x와 y는 객체 3을 가리키고, 변수 z는 객체 5를 가리킨다고 할 수 있다. 즉, 객체 3의 주소값과 변수의 주소값이 모두 일치하는 것이다.
4. 변수 이름 작성 규칙
(1) Python은 Interpreter 언어답게 변수를 알아서 인식한다.
(2) '=' 기호를 통해서 변수를 만들 수 있다.
(3) 변수명에는 문자, 숫자, Under Bar(_)를 포함할 수 있으나 숫자는 가장 처음에 등장할 수 없다.
(4) 변수명은 대소문자를 구분한다.
(5) 아래에 있는 예약어(Keyword)들은 변수명으로 사용될 수 없다.
False, None, True, and, as, assert, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield
* 위 Keyword들은 대소문자가 구분이 된다.
(6) 변수명에는 한글도 사용이 가능하다.