전역(global) & 지역(local) 변수 & Nonlocal 변수

YU NA Joe·2022년 7월 10일
0

전역변수(global variable)이란?

  • A variable declared outside of the function

지역변수(local variable)이란?

  • A variable declared inside the function's body

Nonlocal Variables란?

  • the variable can be neither in the local nor the global scope.
  • used in nested functions

전역변수 

x = "global변수"

def func():
    print("함수안에 x변수는 ", x)

func()
print("함수밖에 x 변수는 ", x)
-->
함수안에 x변수는  global변수
함수밖에 x 변수는  global변수


# 전역변수를 함수내에서 변경해보자 

x = "global"

def foo():    
    x = x * 2
    print(x)
foo()  
-->    
 # UnboundLocalError: local variable 'x' referenced before assignment
 # foo() 함수 x를 local vars로 인식하지만, x는 함수밖에서 선언이 되서 오류가 난다. 
 
 # how to fix it?
 def foo():   
    x = "global"
    x = x * 2
    print(x)
foo()  # x를 함수 안에서 선언하면은 됨

지역변수 

def foo():
    y = "local"
foo()  
print(y)
--> NameError: name 'y' is not defined

# how to fix it?

def foo():
    y = "local"
    print(y)
foo()  

함수내에서 print(y)하면됨
전역, 지역 변수 같이 사용해보기 


x = "global"

def foo():
    global x
    x = x * 2
    y = "local"
    print(x)
    print(y)
    
foo()

--> globalglobal
	local
    
    
x = "global"

def foo():
   
    x = x * 2
    y = "local"
    print(x)
    print(y)
    
foo()
--> x를 지역변수내에서 선언을 안해주서 오류가난다
UnboundLocalError: local variable 'x' referenced before assignment
-----------------------------------------------------------
#  nonlocal 변수 

def outer():
    x = "local"
    def inner():
        nonlocal x # local or global 이 될 수 있음.. 
        x = "nonlocal"
        print("inner", x)
        
    inner()
    print("outer",x)
    
outer()

0개의 댓글