본문 바로가기
Python/Basic

[파이썬, Python] 변수의 범위 - 스코프(Scope), 지역변수(local 변수), 전역변수(global 변수), global 키워드

by coding-choonsik 2023. 3. 9.
728x90
반응형
SMALL

1. 스코프(Scope)

  • 변수에 접근할 수 있는 범위
  • local: 가장 가까운 함수 안의 범위
  • global: 함수 바깥의 변수 또는 import 된 module

1-1. 지역변수(local variable)

  • 함수 내에서 선언된 변수
  • 함수 내에서만 유효한 변수

 

1-2. 전역 변수(global variable)

  • 함수 외부에서 선언된 변수
def func1():
  num1 = 20    # local 변수
  print(num1)
  
# num1 는 func1 함수안에 정의된 지역변수이기 때문에 함수 바깥에서 사용할 수 없음
print(num1)
>>> NameError: name 'num2' is not defined

# 함수 실행
func1()
>>> 20

num2 = 10      # global 변수

print(num2)
>>> 10

 


1-3. 변수의 범위를 확인해주는 함수

  • locals(): 로컬 변수를 확인해주는 함수
  • globals(): 글로벌 변수를 확인해주는 함수
  • in 문을 사용
num1 = 10      # global 변수
  
def func1():
  num2 = 20    # local 변수
  print('num1 로컬변수: ', 'num1' in locals())   # num1변수를 문자열로 보내야됨


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


def func3():
  print('num1 글로벌 변수: ', 'num1' in globals())
  
func1()   
>>> num1 로컬변수:  False      # num1은 local변수가 아니기 때문에 False

func2()
>>> num2 로컬 변수:  True      # num2는 local변수 이기 때문에 True

func3()  
>>> num1 글로벌 변수:  True    # num1은 global 변수이기 때문에 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
>>> 10            # 로컬변수에 값을 저장했으므로 글로벌 변수의 값이 변경되지 않음

num1 = 10

def func5():
  print(num1)

def func6(num):
  global num1    # global 변수를 함수 내부에서 사용할수 있게 해줌
  num1 = num  
  
func5()
>>> 10

func6(5)
>>> 5

728x90
반응형
LIST