데이터가 담기는 그릇. 메모리에 저장된 데이터를 약속된 변수 이름을 통해서 접근할 수 있다.
C 와 같은 static typing 언어의 경우, 변수 선언 시 데이터 타입을 명시해 줘야 하며 데이터 타입에 맞는 데이터만을 담을 수 있다. 또한 컴파일 시 타입 체크를 해준다.
int a;
a = 10; //posible
a = "hello"; //imposible
하지만 python과 같은 dynamic typing 언어의 경우, 프로그램 실행시간에 변수의 데이터 타입을 결정한다. 이는 곧 프로그래머가 변수 선언을 할 필요가 없음을 뜻한다.
a = 10 #posible
a = "hello" #posible
- 파이썬의 변수는 값을 직접 저장하지 않고 값이 있는 객체를 참조한다.
- 파이썬은 일반적인 변수를 사용할 때조차도 객체를 만들어 참조한다. 그러므로 당연히 C 보다 느릴 수밖에 없다.
- 파이썬 변수의 타입은 언제나 객체이다. 이 특성 때문에 변수 선언을 할 필요가 없으며 언제라도 다른 객체 참조가 가능하다.
일반(C 언어) 변수와 파이썬 변수의 차이
- 변수에 변수를 대입하는 경우, 전자는 데이터 값을 복사하지만 후자는 데이터 객체의 id 값을 복사해서 준다.
- 값을 지닌 변수에 다른 데이터 값을 직접 대입하는 경우, 전자는 단순히 값이 교체되지만 후자는 새로운 데이터2 객체가 생기고 참조한다.
- 파이썬에서 하나의 객체를 여러 변수가 참조하는 경우, 각 변수마다 한 객체의 id를 저장하고 객체는 단 하나만 생성된다.
Comments