중첩 함수가 Python의 범위를 둘러싸는 변수를 수정할 수 있나요?
중첩 함수 범위의 바인딩되지 않은 지역 변수
Python에서 중첩 함수는 바깥쪽 범위에 정의된 변수에 액세스하여 코드 재사용 및 캡슐화가 가능합니다. 그러나 중첩된 함수 내의 바깥쪽 범위에 있는 변수를 수정하려고 하면 변수가 비로컬 또는 전역으로 선언되지 않은 경우 "UnboundLocalError"가 발생할 수 있습니다.
다음 코드를 고려하세요.
<code class="python">def outer(): ctr = 0 def inner(): ctr += 1</code>
inner()를 호출하면 ctr이 내부 함수 내에 정의되어 있지 않기 때문에 "UnboundLocalError"가 발생합니다. 이 문제를 해결하려면 다음 접근 방식을 사용할 수 있습니다.
Python 3 이상의 경우:
nonlocal 키워드 사용
nonlocal 키워드를 사용하면 다음을 수행할 수 있습니다. 중첩된 함수 내에서 바깥쪽 범위에 정의된 변수를 수정합니다.
<code class="python">def outer(): ctr = 0 def inner(): nonlocal ctr ctr += 1</code>
Python 2 및 이전 버전:
데이터 구조를 사용하여 변수 보유
Python 2에서는 중첩 함수가 바깥쪽 범위의 변수를 수정할 수 없으므로 데이터 구조를 사용하여 변수를 보유하고 중첩 함수에 전달해야 합니다.
<code class="python">def outer(): ctr = [0] def inner(): ctr[0] += 1</code>
ctr[0]을 사용하여 코드에서 ctr을 선택하세요.
위 내용은 중첩 함수가 Python의 범위를 둘러싸는 변수를 수정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?
