> 백엔드 개발 > 파이썬 튜토리얼 > 변수 수정에서 Python의 `nonlocal` 키워드는 `global`과 어떻게 다릅니까?

변수 수정에서 Python의 `nonlocal` 키워드는 `global`과 어떻게 다릅니까?

Linda Hamilton
풀어 주다: 2024-12-21 04:59:13
원래의
991명이 탐색했습니다.

How Does Python's `nonlocal` Keyword Differ from `global` in Modifying Variables?

Python 3의 "비로컬" 이해

기존 언어와 달리 Python에서는 중첩 함수가 외부 범위에 정의된 변수에 액세스할 수 있습니다. 그러나 중첩된 함수 내에서 선언되지 않은 변수(즉, 비지역 변수)에 액세스하면 예기치 않은 동작이 발생할 수 있습니다.

"nonlocal" 키워드

In Python 3에서는 "nonlocal" 키워드를 사용하면 중첩 함수 내에서 외부 범위에 선언된 변수를 수정할 수 있습니다. "nonlocal"을 사용하면 수정 중인 변수가 로컬이 아니며 외부 범위에 속한다고 선언합니다.

"nonlocal" 작동 방식

다음을 고려하세요. 사용하지 않고 다음 코드 "nonlocal":

x = 0

def outer():
    x = 1

    def inner():
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)
로그인 후 복사

출력:

inner: 2
outer: 1
global: 0
로그인 후 복사

이 예에서 내부 함수의 변수 x는 외부 함수의 변수 x를 숨기고 값 2가 다음에 할당됩니다. x 내부 함수 내. 외부 함수의 변수 x는 영향을 받지 않습니다.

"nonlocal" 사용

내부 함수에서 외부 함수의 변수 x를 수정하려면 "nonlocal"을 다음과 같이 사용할 수 있습니다. 다음:

x = 0

def outer():
    x = 1

    def inner():
        nonlocal x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)
로그인 후 복사

출력:

inner: 2
outer: 2
global: 0
로그인 후 복사

이 경우 "nonlocal" 키워드를 사용하면 내부 함수가 외부 함수의 변수 x에 액세스하고 수정할 수 있습니다. 결과적으로 외부 함수의 x 값은 2로 변경됩니다.

"global"과의 비교

"nonlocal"과 달리 "global" 키워드는 전역 범위에 속하는 변수를 나타냅니다. "전역"을 사용하면 동일한 이름을 가진 다른 지역 변수가 있는지 여부에 관계없이 내부 함수의 변수가 전역 변수에 바인딩됩니다.

x = 0

def outer():
    x = 1

    def inner():
        global x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)
로그인 후 복사

출력:

inner: 2
outer: 1
global: 2
로그인 후 복사

따라서 외부 범위에서 선언된 변수를 수정하려는 경우에는 "nonlocal"을 사용해야 하고, 전역 범위에서 변수에 접근할 경우에는 "global"을 사용해야 합니다.

위 내용은 변수 수정에서 Python의 `nonlocal` 키워드는 `global`과 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿