
변수(variables)에 대해 다시 한번 더 고민해 보자.
파이썬에서 변수란 "어떤 데이터를 가리키는 이름"이라고 했었다. 이는 다음 그림과 같이 표현할 수 있겠다.

a=5 라는 문장은 "5 라는 데이터가 새로 만들어 졌다. 이제 그 데이터를 a 라는 이름으로 부르겠다"는 뜻이다. 이 문장이 실행된 다음에 만약에 a=3 이라는 문장이 실행되면 이 문장은 "(원래 다른 데이터를 가리키던) a 라는 이름을 이제 3이라는 데이터를 가리키는데 사용하겠다"는 뜻이 된다.
파이썬의 변수에 대한 이러한 접근은 일반 컴퓨터 언어 (C, Java와 같은)와는 조금 다르게 느껴진다.
일반 컴퓨터 언어에서의 변수와 데이터는 다음과 같이 이해된다.
컴퓨터에서 데이터는 일종의 컨텐츠(contents)로서, 그것을 담을 수 있는 용기(vessel) 또는 공간(space, room)이 필요하다. 일반 컴퓨터 언어에서는 그 공간을 먼저 확보해야 한다. 이 과정을 보통 변수의 선언(declaration)이라고 부른다. 즉, 파이썬과는 다르게 변수란 어떤 공간의 이름이 된다. 그래서 a=5 와 같은 assignment는 "a 라는 이름이 가리키는 공간에 5라는 데이터를 저장하라" 라는 의미가 된다. 물론, reassignment를 통해 그 공간에 저장되는 데이터는 달라질 수 있다. 즉, 그 공간에 저장된 값이 시시때때로 바뀐다. 이렇게 시시때때로 바뀌니 변수(variable)이다. 한번 만들어진 값 그대로 변하지 않는 값은 상수(constant)라고 부른다.

파이썬과 자바의 접근이 달라보이는가? 데이터를 저장하기 위한 어떤 공간의 의미만 통일시킨다면 2개의 접근은 절대 다르지 않다. 파이썬에서 변수의 선언이 불필요한(? 사용하지 않는?) 것 외에는 일반 컴퓨터 언어와 개념적으로 동일하다. (# 파이썬에서 일반 컴퓨터 언어와 같은 접근을 사용하는 경우도 있다. 이는 다음 글의 주제인 [데이터 구조] 에서 확인해 보자). 즉, 파이썬에서 a=5와 같이 assignment 코드가 실행되면, 우변의 값을 저장하기 위한 공간을 먼저 만든 후에 (즉, 변수선언), 그 공간에 5라는 값을 저장하는 형태가 된다고 보는 것이다.
실제로, 일반 파이썬 교재에서도 "무슨 데이터를 어떤 이름으로 부른다"라는 표현 보다는, "어떤 변수에 무슨 값을 저장하다"라는 표현이 더 많이 사용되고 있다.
간단하게 요약한다면,
a=3 이라는 assignment 에서
파이썬에서는, assignment 기호(=) 우측에 있는 값(value)을 앞으로 a 라는 이름으로 부르겠다 는 뜻인데 비해, 일반 컴퓨터 언어에서는, a 라는 이름으로 불리워지는 공간 (이 공간을 변수라고 부른다)에 우변의 값을 저장하겠다는 의미가 된다.
'파이썬 (python)' 카테고리의 다른 글
[python 13] 데이터 구조 - 튜플, 딕셔너리 (1) | 2020.03.16 |
---|---|
[python 12] 리스트(list) 데이터 구조 (0) | 2020.03.16 |
[python 10] 반복을 위한 for, while (0) | 2020.02.25 |
[python 9] 분기를 위한 if, elif, else (1) | 2020.02.25 |
[python 8] 컨트롤 구조 control structure (0) | 2020.02.20 |