태그된 제품에 대해 수수료를 받습니다.
지역변수와 전역변수
파이썬에서 지역변수와 전역변수는 변수의 범위(scope)에 따라 나뉜다.
변수의 범위는 변수가 어디서 접근 가능한지를 결정한다.
전역변수(Global Variable)
전역변수는 함수 외부에서 정의되며, 코드의 모든 범위에서 접근할 수 있는 변수
전역변수는 전역 네임스페이스(global namespace)에 속한다.
x = 10 # 전역변수
def foo():
print(x) # 전역변수에 접근
foo() # 출력: 10
print(x) # 출력: 10
지역변수(Local Variable)
지역변수는 함수 내부에서 정의되며, 그 함수 내에서만 접근할 수 있는 변수
함수가 종료되면 지역변수는 소멸된다.
def bar():
y = 20 # 지역변수
print(y)
bar() # 출력: 20
# print(y) # 오류: y는 지역변수로 함수 외부에서 접근 불가
변수의 스코프(scope)
파이썬에서 변수의 스코프(scope)는 변수의 유효 범위를 의미한다.
스코프는 변수가 어디에서 접근 가능한지를 결정한다.
전역 스코프(Global Scope)
전역 변수는 코드 어디서든 접근할 수 있다.
함수나 클래스 바깥에 정의된 변수
지역 스코프(Local Scope)
지역 변수는 함수 내부에서만 접근할 수 있다.
함수 내에서 정의된 변수
비지역(nonlocal) 스코프
비지역 변수는 중첩 함수 내에서 외부 함수의 변수를 수정할 때 사용
nonlocal 키워드를 사용
내장 스코프(Built-in Scope)
파이썬 내장 함수나 예외 같은 내장 이름들을 포함한다.
예를 들어, print() 함수나 len() 함수 등이 이에 해당
파이썬에서 스코프는 LEGB 규칙에 따라 결정
L (Local): 현재 함수 내부의 스코프.
E (Enclosing): 현재 함수가 중첩된 함수일 때, 바로 바깥 함수의 스코프.
G (Global): 모듈 수준의 스코프.
B (Built-in): 내장 스코프.
# 전역 변수
x = "global"
def outer():
# 바깥 함수의 변수
x = "outer"
def inner():
# 내부 함수의 변수
x = "inner"
print("inner:", x)
inner()
print("outer:", x)
outer()
print("global:", x)
inner: inner
outer: outer
global: global
global 키워드
전역 변수를 함수 내부에서 수정하려면 global 키워드를 사용해야 한다.
x = "global"
def modify_global():
global x
x = "modified global"
modify_global()
print(x) # 출력: modified global
nonlocal 키워드
중첩 함수에서 바깥 함수의 변수를 수정하려면 nonlocal 키워드를 사용해야 한다.
def outer():
x = "outer"
def inner():
nonlocal x
x = "modified outer"
inner()
print(x) # 출력: modified outer
outer()
이처럼 파이썬의 스코프는 변수가 정의된 위치에 따라 다르게 동작하며,
global과 nonlocal 키워드를 사용하여 특정 스코프의 변수를 수정할 수 있다.
태그된 제품에 대해 수수료를 받습니다.