nonlocal 문은 전역변수을 제외한 바로 위의 함수에서 사용되는 변수와 바인딩되어 참조하도록 합니다.
즉, nonlocal 문으로 선언되는
변수는 전역변수와 바인딩을 할 수 없습니다.
| a = 10 def test1 ():    
  nonlocal a    
  a = 100   
   print (a) test1() print (a) | 
위의 코드를 실행하면 아래와 같이 에러가 발생됨을 알 수 있습니다.
| File "nonlocal_test1.py",
  line 4    
  nonlocal a    
  ^ SyntaxError: no binding for nonlocal
  'a' found | 
사용된 함수 바로 한단계 바깥쪽에 위치한 변수와 바인딩을 할 수 있도록 코드를
수정하면
| a = 10 def test1 ():    
  a = 100    
  def test2 ():        
  nonlocal a   # test1() 함수에
  영향을 미침        
  a = 1000    
  test2 ()    
  print (a) test1 () print (a) | 
Test2() 함수에서 nonlocal을 선언했으므로 test1() 함수의 a 변수의 값이 100에서 1000으로 변경됩니다.
실제 실행예를 보면, test2() 함수의
값이 1000이 출력되고, 나중에 전역변수의 값인 10이 출력됨을 알 수 있습니다.
| 1000 10 | 
 
댓글 없음:
댓글 쓰기