반응형
내포된 함수가 외부 함수의 변수에 액세스할 수 있지만 수정할 수 없는 이유
아래의 두 번째 사례에서 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
반응형
'programing' 카테고리의 다른 글
X-Frame-Options에 의해 로드가 거부됨: http://www.youtube.com/v/g5RM5StrMXY 은 교차 프레임 구성을 허용하지 않습니다. (0) | 2023.08.06 |
---|---|
함수 호출의 별표 (0) | 2023.08.06 |
Excel VBA 필터링/가시 셀 (0) | 2023.08.06 |
선행 및 후행 공백을 어떻게 잘라낼 수 있습니까? (0) | 2023.08.06 |
jdiv 태그 내부에 이미지 추가 쿼리 (0) | 2023.08.06 |