전역변수(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()