티스토리 뷰

  • mutable 자료형을 가진 이상, 지역변수가 전역 변수에 영향을 줄 수 없다.
  • 그러나 global 명령어 사용으로, 지역변수가 전역 변수에 영향을 줄 수 있다.
x = 15           # 전역변수 (global variable)

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

f()
print(x)       # 15 : 변수에 값이 없다. Call By Assignment

global 명령어 사용

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

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

f()
print(x)       # 30 

nonlocal 명령어

  • nonlocal: 지역변수가 아님을 선언
  • nonlocal이 사용된 함수 바로 한단계 바깥쪽에 위치한 변수와 바인딩을 할 수 있다.
x = 20         # 전역변수 (global variable)

def f():
    x = 40

    def g():
        global x
        x = 80

    g()        # 함수 g를 실행하여 nonlocal이 적용되도록 한다.
    print(x)   # 함수 f에서의 값이 출력된다. nonlocal이 적용되어 80 출력

f()
print(x)       # 모든 함수 실행이 끝나고 x를 출력. 처음값인 20이 출력된다.

 

 

출처 -devbruce.github.io/python/py-13-global,nonlocal/

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함