Python

14. 변수의 범위.

HJ76 2023. 3. 9. 17:48

1. 스코프(scope)

  • 변수의 접근할 수 있는 범위
  • local : 가장 가까운 함수안의 범위
  • global : 함수 바깥의 변수 또는 import된 module
num1 = 10 # 글로벌 변수

def func1():
  num2 = 20 # 로컬 변수
  print(num2)
print(num1)
# num2는 로컬 변수이므로 함수 바깥에서 사용할 수 없음
print(num2) # NameError: name 'num2' is not defined
print(num1) # 10
func1() #20
# locals() : 로컬 변수를 확인해주는 함수
# globals() : 글로벌 변수를 확인해주는 함수

num1 = 10 # 글로벌 변수

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

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

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

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() # 5
num1 = 10
 
def func5():
  print(num1)

def func6(num):
  global num1
  num1 = num
  
func5()
func6(5) # num1에 매개변수 5를 대입 
func5() # 5