programing

내포된 함수가 외부 함수의 변수에 액세스할 수 있지만 수정할 수 없는 이유

mytipbox 2023. 8. 6. 17:32
반응형

내포된 함수가 외부 함수의 변수에 액세스할 수 있지만 수정할 수 없는 이유

아래의 두 번째 사례에서 Python은 로컬 변수를 찾으려고 합니다.그것이 하나를 찾지 못했을 때, 왜 그것은 첫 번째 사례처럼 외부 범위를 볼 수 없습니까?

로컬 스코프에서 x를 찾은 다음 외부 스코프에서 x를 찾습니다.

def f1():
    x = 5
    def f2():
         print x

이것이 주는local variable 'x' referenced before assignment오류:

def f1():
    x = 5
    def f2():
        x+=1

함수 f2()의 서명을 수정할 수 없으므로 x의 값을 전달하고 반환할 수 없습니다. 하지만 x를 수정할 방법이 필요합니다. 파이썬에게 외부 범위에서 변수 이름을 찾으라고 명시적으로 말할 수 있는 방법이 있습니까?global키워드)?

파이썬 버전: 2.7

Python 3.x에서는 다음이 가능합니다.

def f1():
        x = 5
        def f2():
                nonlocal x
                x+=1
        return f2

Python 2.x에 대한 문제와 해결책은 이 게시물에 나와 있습니다.또한 이 주제에 대한 자세한 내용은 PEP 3104를 참조하십시오.

def f1():
    x = { 'value': 5 }
    def f2():
        x['value'] += 1

해결 방법은 가변 개체를 사용하고 해당 개체의 구성원을 업데이트하는 것입니다.때때로 Python에서 이름 바인딩이 까다롭습니다.

언급URL : https://stackoverflow.com/questions/11987358/why-nested-functions-can-access-variables-from-outer-functions-but-are-not-allo

반응형