Python에서 전역 변수를 사용하는 방법(전역 키워드)
Python에서 전역 변수가 작동하는 방식을 알아보세요. 변수 범위, 로컬 및 전역 네임스페이스, 그리고 global 키워드를 사용하여 변수를 수정하는 방법을 이해합니다.
개요
Python에서 버그 없는 소프트웨어를 작성하려면 네임스페이스와 변수 범위 지정을 이해하는 것이 중요합니다. 범위는 프로그램의 어느 부분이 변수에 액세스하거나 수정할 수 있는지를 결정합니다. 모든 함수 외부에서 선언된 변수는 전역 범위에 존재하며 모듈 내 어디에서나 읽을 수 있습니다.
그러나 함수가 전역 변수를 수정(재할당)하려고 하면 문제가 발생합니다. 기본적으로 Python은 함수 내에서 할당을 볼 때 변수가 함수에 대해 로컬이라고 가정합니다. 전역 변수를 전역 변수로 선언하지 않고 수정하려고 하면 Python은 같은 이름의 지역 변수를 생성하고 전역 변수는 변경되지 않은 채로 둡니다(또는 `UnboundLocalError` 발생).
로컬 변수를 생성하는 대신 전역 네임스페이스의 변수를 수정하고 싶다고 Python에 명시적으로 알리려면 함수 내에서 `global` 키워드를 사용하여 변수를 선언해야 합니다. 전역 변수를 사용해야 하는 경우도 있지만 상태를 추적하고 디버그하기 어렵게 만들기 때문에 대규모 소프트웨어 설계에서는 일반적으로 나쁜 습관으로 간주됩니다.
코드 및 실행 출력
이 스크립트는 전역 변수 읽기, 변수 섀도잉 트랩, global 키워드를 사용한 전역 변수 수정을 보여줍니다.
counter = 10 # Global variable
def read_counter():
# Reading a global variable works out-of-the-box
print("Reading global counter:", counter)
def shadow_counter():
# Attempting to assign without 'global' creates a local variable
counter = 20 # Shadowing
print("Inside shadow function:", counter)
def modify_counter():
global counter # Declaring we are writing to global scope
counter = 50
print("Inside modify function:", counter)
read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10
modify_counter()
print("Counter after modify function:", counter) # Now 50Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50단계별 구현
- 함수 범위 외부에서 전역적으로 액세스해야 하는 변수를 선언합니다.
- 특별한 선언을 추가하지 않고도 함수 내에서 전역 변수를 읽을 수 있습니다.
- 전역 변수 값을 수정해야 하는 경우 함수 내에서 전역 키워드(예: 전역 카운터)를 사용하세요.
- 범위 혼란과 네임스페이스 오염을 방지하기 위해 전역 변수 사용을 제한합니다.
자주 묻는 질문
Python의 변수 섀도잉이란 무엇입니까?
함수와 같이 로컬 범위 내에 선언된 변수가 외부 전역 범위에 있는 변수와 이름이 같을 때 섀도잉이 발생합니다. 지역 변수는 전역 변수를 마스킹하여 해당 범위 내에서 일시적으로 액세스할 수 없도록 만듭니다.
글로벌 키워드와 비로컬 키워드의 차이점은 무엇입니까?
global은 가장 바깥쪽 모듈 범위에 정의된 변수에 액세스하는 데 사용됩니다. nonlocal은 중첩된 함수 내에서 바깥쪽(외부) 함수 범위에 정의된 변수에 액세스하는 데 사용됩니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 변수 및 데이터 유형 설명
Python 변수와 핵심 데이터 유형(문자열, 정수, 부동 소수점, 부울)을 이해합니다. Python의 메모리 할당에 대한 완전한 초보자 가이드입니다.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.