반응형
중첩 함수가 외부 함수의 변수에 액세스 할 수 있지만 수정할 수없는 이유
이 질문에 이미 답변이 있습니다.
- 중첩 함수에서 파이썬 덮어 쓰기 변수 4 답변
아래 두 번째 경우에서 Python은 지역 변수를 찾으려고합니다. 찾을 수없는 경우 첫 번째 경우처럼 외부 범위에서 볼 수없는 이유는 무엇입니까?
이것은 로컬 범위에서 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
있습니까 (키워드 와 유사한 것 )?
Python 버전 : 2.7
def f1():
x = { 'value': 5 }
def f2():
x['value'] += 1
해결 방법은 변경 가능한 개체를 사용하고 해당 개체의 구성원을 업데이트하는 것입니다. 이름 바인딩은 때때로 파이썬에서 까다 롭습니다.
Python 3.x에서는 다음이 가능합니다.
def f1():
x = 5
def f2():
nonlocal x
x+=1
return f2
이 게시물 에는 Python 2.x의 문제와 해결책도 나와 있습니다. 또한 이 주제에 대한 자세한 내용은 PEP 3104 를 참조하십시오.
반응형
'developer tip' 카테고리의 다른 글
Facebook 페이지의 피드를 내 웹 사이트에 삽입하는 방법 (0) | 2020.11.11 |
---|---|
DateInterval 형식에서 'P'는 무엇을 의미합니까? (0) | 2020.11.11 |
SQL에서 같은 줄에 정수 변수와 문자열 인쇄 (0) | 2020.11.11 |
XCTAssertEqual이 두 문자열 값을 비교하지 못합니까? (0) | 2020.11.10 |
IDEA 편집기에서 다음 항목을 어떻게 선택할 수 있습니까? (0) | 2020.11.10 |