[TIL / Python] 전역변수, 지역변수, 둘다아닐 때, scope 변경

yujeongkwon·2022년 6월 26일
0

TIL

목록 보기
5/9

! 넓은 범위의 변수는 읽기 만 가능

n = 1
def func():
	print(n)
func() // 1 출력
def func():
 	n = 1
 	def func2():
    	print(n)
	func2() // 1 출력
func()

! 넓은 범위의 변수 변경 불가능

n = 1
def func():
	print(n+1)
func() // error
def func():
 	n = 1
 	def func2():
    	print(n+1)
	func2() // error

global

전역변수를 함수 내에서 사용할때 사용

n = 1
def func():
	global n
	print(n+1)
func() // 2

전역 변수가 아니라서 오류
= "NameError: name 'n' is not defined" 에러가 떴을 때

def func():
 	n = 1
 	def func2():
    	global n
    	print(n+1)
	func2() // error
func()

해결법 : nonlocal

위에 생긴 오류처럼 전역변수를도 아니고, 지역 변수도아닌 함수 내에서 사용할때 사용
프로그래머스에서 solution 함수에서 새로운 함수를 작성해 solution 함수내 변수를 사용하고 싶을때

def func():
 	n = 1
 	def func2():
    	nonlocal n
    	print(n+1)
	func2() // 2
func()
profile
인생 살자.

0개의 댓글