🔥 변수의 범위와 수명
변수의 범위(Scope)는 변수가 어디에서 접근 가능한지를 나타내며, 변수의 수명(Lifetime)은 변수가 얼마나 오랫동안 유지되는지를 나타냅니다. 이 두 가지 개념은 프로그램 내에서 변수를 효율적으로 사용하고 버그를 방지하는 데 중요합니다.
전역 범위 (Global Scope)
전역 범위에서 정의된 변수는 프로그램 어디에서나 접근할 수 있습니다. 이 변수들은 프로그램이 실행되는 동안 계속 유지되며, 함수 내부에서도 접근할 수 있습니다.
global_variable = 10 # 전역 변수 def my_function(): print(global_variable) # 전역 변수에 접근 가능 my_function() print(global_variable)
python
지역 범위 (Local Scope)
지역 범위에서 정의된 변수는 특정 함수 내에서만 접근할 수 있습니다. 이 변수들은 해당 함수가 호출될 때 생성되고 함수가 종료될 때 파괴됩니다.
def my_function(): local_variable = 5 # 지역 변수 print(local_variable) my_function() print(local_variable) # 오류 발생
python
함수 내에서 전역 변수 수정
함수 내에서 전역 변수를 수정하려면 global
키워드를 사용해야 합니다.
global_variable = 10 def modify_global_variable(): global global_variable global_variable = 20 modify_global_variable() print(global_variable) # 20으로 변경됨
python
중첩 범위 (Nested Scope)
함수 내부에서 다른 함수를 정의할 경우, 내부 함수는 외부 함수의 범위에 접근할 수 있습니다.
def outer_function(): outer_variable = 10 def inner_function(): print(outer_variable) # 외부 함수의 변수에 접근 가능 inner_function() outer_function()
python
중첩 함수에서 외부 함수의 변수에 접근하려면 nonlocal
키워드를 사용해야 합니다. nonlocal
키워드를 사용하면 Python은 해당 변수가 가장 가까운 외부 함수의 범위에 있는 것으로 인식하고, 그 변수를 수정할 수 있도록 해줍니다.
예를 들어, 다음과 같이 중첩 함수에서 외부 함수의 변수를 수정하는 경우를 살펴보겠습니다:
def outer_function(): outer_variable = 10 def inner_function(): nonlocal outer_variable outer_variable = 20 # 외부 함수의 변수 수정 inner_function() print(outer_variable) # 수정된 값을 출력 outer_function()
python
위의 예제에서 inner_function
내에서 nonlocal outer_variable
을 사용하여 외부 함수인 outer_function
의 범위에 있는 outer_variable
에 접근하고 값을 수정할 수 있습니다. 이후 outer_function
에서 outer_variable
을 출력하면 수정된 값인 20이 출력됩니다. 이렇게 nonlocal
키워드를 사용하면 중첩 함수에서 외부 함수의 변수를 조작할 수 있습니다.
변수의 수명
변수의 수명은 변수가 생성되고 소멸되는 시점을 나타냅니다. 지역 변수의 수명은 함수가 호출될 때 시작되고 함수가 종료될 때 끝납니다.
연습문제
- 다음 코드에서 어떤 변수가 전역 범위에서 정의되었는지 확인하세요.
x = 10 def my_function(): y = 5 print(x) my_function()
python
- 함수 내에서 전역 변수를 수정하는 방법에 대해 설명하세요.
- 중첩 함수에서 외부 함수의 변수에 접근할 때 어떤 키워드를 사용해야 하는지 설명하세요.
- 지역 범위와 전역 범위 변수의 이름이 같을 때 Python은 어떤 변수를 사용할까요?
- 변수의 수명이 어떻게 결정되는지 설명하세요.
- Python에서 변수의 범위와 수명을 관리하는 데 어떤 예외적인 상황이 있을 수 있는지 예시와 함께 설명하세요.