카테고리 없음

[Python] 파이썬의 변수 알아보기

chaenii 2022. 10. 7. 20:46

파이썬에서는 데이터, 함수, 클래스, 모듈, 패키지 등을 모두 객체(object)로 취급한다.

객체는 자료형을 가지며, 메모리(저장공간)을 차지한다. 파이썬은 이런 특징 때문에 파이썬의 변수는 값을 갖지 않는다는 특징이 있다.

 

예를 들어, 다음과 같은 대입 연산 과정에서 x가 7을 가지고 있다고 할 수 없다. 

x는 7이라는 데이터가 아닌 데이터가 저장된 곳의 주소(address 또는 reference)가 저장된다.

x = 7

 

이로써 다음 코드의 실행 결과는 True가 된다. (id()함수는 객체의 식별 번호를 반환해준다.)

여기서 중요한 부분은 x = 7이 값을 복사하여 대입하지 않는다는 것이다. 단지, x라는 이름을 가진 변수가 객체 7을 참조하고 있을 뿐이다.

x = 7

print(id(x) == id(7)) # True

 

아래의 프로그램에서는 변수가 2개 정의되었다. 

- 변수 n : 전역 변수

- 변수 x : 지역 변수

n = 1

def put_id():
    x = 1
    print("id(x) = %d" %id(x))

print("id(1) = %d" %id(1))
print("id(n) = %d" %id(n))
put_id()

이 프로그램을 실행 시키면, 다음과 같이 1,n,x의 식별변호가 모두 같다는 결과가 나온다. 따라서 n과 x는 모두 int 형 객체 1을 참조하는 이름에 불과하다는 것을 알 수 있다.

 

C언어에서는 함수 내부에 선언한 지역 변수는 함수가 실행될 때 생성하고 종료될 때 소멸된다. 하지만 파이썬은 위의 예시에서 확인할 수 있듯이 1이라는 정수 객체는 put_id()함수와는 무관하게 존재하기 때문에, 함수가 시작하고 종료함에 따라 객체가 생성되거나 소멸하지 않는다.

반응형