변수의 종류
로컬 변수, 전역 변수, 참조 변수, 지역 변수
· 변수의 종류
- 로컬 변수 : 함수 내에서만 정의되고, 해당 함수 내에서만 사용하는 변수이다.
- 전역 변수 : 함수 외부에서 정의되며, 어디에서나 참조하고 수정할 수 있는 변수이다.
- 참조 변수 : 파이썬에서의 모든 변수는 참조 변수이다. 변수를 할당하면 실제 값을 가지는 게 아니라 데이터가 저장된 메모리 위치를 참조하게 된다.
- 지역 변수 : 중첩된 함수에서 상위 함수의 변수를 변경할 수 있게 해주는 변수이다. nonlocal 키워드를 사용하여 선언한다.
각 각의 예시를 순서대로 살펴보자.
- 로컬 변수
def function():
local_var = "I'm a local variable"
print(local_var)
function() # I'm a local variable 출력
local_var 변수는 function 함수 내의 로컬 변수이다. 해당 함수 내에서만 사용할 수 있으며, 함수가 종료되면 더 이상 참조할 수 없다.
- 전역 변수
global_var = "I'm a global variable"
def function():
print(global_var)
function() # I'm a global variable 출력
함수 외부에서 선언된 global_var 변수를 함수 내에서 참조하여 사용하였다.
수정하기 위해서는 'globar' 키워드를 사용해야 한다.
global_var = "I'm a global variable"
def function():
global global_var
global_var = "I've been changed!"
print(global_var)
function() # I've been changed! 출력
globar 키워드를 사용하여 전역 변수를 함수 내에서 수정할 수 있는 상태로 만들었다. 이후, 원래의 문구를 수정하여 출력하였다.
- 참조 변수
a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4] 출력
변수 a를 변수 b에 할당하여, 변수 a의 [1, 2, 3] 데이터가 저장된 메모리의 위치를 참조하는 변수 b를 생성하였다.
변수 b는 변수 a를 참조하므로, 변수 b를 변경하면 변수 a의 값 또한 변경된다.
- 지역 변수
def a_function():
nonlocal_var = "I'm a nonlocal variable"
def b_function():
nonlocal nonlocal_var
nonlocal_var = "I'm changed"
b_function()
print(nonlocal_var)
a_function() # I'm changed 출력
nonlocal_var 변수는 상위 a 함수 내의 로컬 변수이지만, 하위 b 함수 내에 nonlocal 키워드를 사용하여 상위 함수의 nonlocal_var 변수를 참조하고 수정할 수 있는 상태가 된다.
이처럼 파이썬에서는 변수의 유효 범위에 따라 로컬 변수, 전역 변수, 지역 변수를 사용하며,
모든 변수는 기본적으로 참조 변수의 성질을 가진다.