[Python] global / nonlocal

Coding_Holic·2022년 10월 18일

코딩테스트 준비

목록 보기
5/12

파이썬에도 당연스럽게도 전역변수와 지역변수가 있다!

왜 이제야 파이썬에도 있다는걸 알았을까😅

x = 15  # 전역변수 (global variable)

def f():
    x = 30  # 지역변수 (local variable)
    

f()

print(x)

이때 15가 출력된다.
변수의 값에 변화가 없었음을 알 수 있다.
즉 파이썬은 Call By Assignment의 특성을 가지고 있다.

Global(전역변수)

하지만 global 명령어를 사용할 경우 지역변수가 전역변수에 영향을 줄 수 있다.

x = 15  # 전역변수 (global variable)

def f():
    global x  # 함수의 지역변수 x 가 전역변수 x를 가르키게 된다.
    x = 30 # 지역변수 (local variable)
    
f()

print(x)

nonlocal(지역변수가 아님을 선언)

x = 20 # 전역변수 (global variable)

def f():
    x = 40
    
    def g():
        nonlocal x
        x = 80
        
    g()  # 함수 g를 실행하여 nonlocal이 적용되도록 한다.
    print(x)  # 함수 f에서의 x값이 출력된다.(함수 g에서 nonlocal 의 영향을 받아 변수가 80으로 변경되었다.)
f()
print(x)  # 모든 함수 실행이 끝나고, 변수 x를 출력한다.(출력값은 처음값인 20이다)

선언된 변수가 지역 변수가 아님을 말하는 것
-> 즉 선언된 변수가 있어야 실행가능하다!

profile
안녕하세용 개발에 미치고 싶은 초보 개발자입니다:)

0개의 댓글