KDT/Python

변수의 범위(Local, Global)

jhwannabe 2023. 3. 9. 15:57

1. 스코프(Scope)

  • 변수의 접근할 수 있는 범위
  • local: 가장 가까운 함수안의 범위
  • global: 함수 바깥의 변수 또는 import된 module
num1 = 10 # global variable (전역변수)

def func1():
    num2= 20 # local variable (지역변수)
    print(num2)
    
print(num1) # 10
print(num2) # NameError: name 'num2' is not defined

print(num1) # 10
func1() # 20
# locals(): 로컬 변수를 확인해주는 함수
# globals(): 글로벌 변수를 확인해주는 함수

def func1():
    num2 = 20
    print('num1 로컬 변수: ', 'num1' in locals())

def func2():
    num2 = 20
    print('num2 로컬 변수: ', 'num2' in locals())

def func3():
    num2 = 20
    print('num1 글로벌 변수: ', 'num1' in globals())

def func4():
    num2 = 20
    print('num2 글로벌 변수: ', 'num2' in globals())
    
    
func1() # num1 로컬 변수:  False
func2() # num2 로컬 변수:  True
func3() # num1 글로벌 변수:  True
func4() # num2 글로벌 변수:  False
num1 = 10

def func4():
    num1 = 20
    print(num1)
    

func4() # 20
print(num1) # 10

2. Global 키워드

  • 함수 내부에서 로컬변수가 아닌 글로벌 변수로 사용하게 함
num1 = 10

def func5():
    print(num1)

def func6(num):
    num1 = num # 로컬 변수에 값을 저장했으므로 글로벌 변수에 값이 변경되지 않음


func5() # 10
func6(5)
func5() # 10
num1 = 10

def func5():
    print(num1)

def func6(num):
    global num1 # 글로벌 변수로 사용
    num1 = num
    
    
func5() # 10
func6(5)
func5() # 5
728x90
반응형