LEGB 규칙에 대해 알고 있습니다. 그러나 함수가 둘러싼 함수에서 정의 된 변수에 대한 읽기 액세스 권한을 가지고 있는지 여부를 간단하게 테스트하는 것은 실제로 작동하지 않는 것 같습니다. 즉 :내 함수가 둘러싼 함수에서 변수에 액세스 할 수없는 이유는 무엇입니까?
#!/usr/bin/env python2.4
'''Simple test of Python scoping rules'''
def myfunction():
print 'Hope this works: '+myvariable
def enclosing():
myvariable = 'ooh this worked'
myfunction()
if __name__ == '__main__':
enclosing()
결과 :
NameError: global name 'myvariable' is not defined
내가 뭔가 잘못하고 있습니까? LEGB 결의안보다 더 많은 것이 있습니까? 이처럼 한 경우에 당신이 할 수있는
그냥'enclosing' 함수를 명명하면 너무 :) –
그래. 나는 틀린 호출 함수를 포함하는 'enclosing'을 잘못 생각했다. 그러나 실제로는 중첩 된 함수의 부모를 의미한다. – mikemaccana
유효한 태그를 되돌릴 필요가 없습니다. 그것은 당신에 관한 것이 아니라 질문에 관한 것입니다. – SilentGhost