Python - Variable Scope

우야·2021년 6월 26일
0
post-custom-banner


LEGB (Local-> Enclosing-> Global-> Built-in)는 프로그램을 실행할 때 Python 인터프리터가 따르는 논리

아래 간단한 예제로 Scope을 알수 있다.
결과는?

name = 'g'

def main():
    def a():
        name = 'a'
        
    def b():        
        nonlocal name
        name = 'b'
        
    def c():
        global name
        name = 'd'
       
    name = 'hello'
    
    a()
    print('a ' + name)
    b()
    print('b ' + name)
    c()
    print('c ' + name)
    

print('g ' + name)
main()
print('main ' + name)
print('g ' + name)

if __name__ == "__main__":
    main()

문제 1: 위를 출력했을때 결과는?
문제 2: nonlocal을 주석처리 했을때 결과는?

**힌트

  • nonlocal : 로컬이 아닌 가장 가까운 상위에서 바인딩된 변수를 참조
  • global : 전역 변수를 사용

**결과

g g
a hello
b b
c b
main d
g d
a hello
b b
c b
profile
Fullstack developer
post-custom-banner

0개의 댓글