지역 변수 : 특정 구역(ex. 함수) 내에서 사용 가능한 변수
전역 변수 : 모든 구역에서 사용 가능한 변수
list = [1, 2, 3]
def sum():
sum_val = 0
for num in list: # 함수 내부에서는 전역 변수 list에 접근 가능
sum_val += num
total_sum = sum()
print(total_sum) # 6
print(sum_val) # NameError: name 'sum_val' is not defined
# sum_val은 함수 내부에서 정의된 지역 변수이기 때문에 함수 외부에서 호출 시 NameError가 발생
list = [1, 2, 3]
def edit():
__list = list
__list.append(4)
edit()
print(list) # 1, 2, 3, 4
# edit 함수에서 __list 변수만 수정했지만 list와 같은 메모리 주소를 참조하기 때문에 list 변수 또한 변경됨
list = [1, 2, 3]
def edit():
__list = list
__list = [4, 5, 6]
edit()
print(list) # [1, 2, 3]
# 위와 동일하지만 __list 변수를 재정의함으로써 list와 __list는 다른 주소값을 갖게 됨