내부 함수는 외부 함수의 변수(변수, 불변)에 액세스합니다.

Python에서 내부 함수는 해당 변수가 변경 가능하거나 불변인지 여부에 관계없이 외부 함수의 변수에 액세스할 수 있습니다. 그러나 변경 가능 변수와 불변 변수에 대한 내부 함수의 동작에는 약간의 차이가 있습니다.

불변 변수

불변변수란 정수, 부동소수점수, 문자열, 튜플 등 생성 후 값을 수정할 수 없는 변수를 말한다. 내부 함수에서 외부 함수의 불변 변수를 수정하려고 하면 Python은 외부 함수의 원래 변수를 수정하지 않고 새 지역 변수를 생성하고 해당 범위 내에서 사용합니다.

def outer_function():
    x = 10  # 不可变变量
    def inner_function():
        nonlocal x  # 使用 nonlocal 声明以便修改外部函数的变量
        x = 20
    inner_function()
    print(x)  # 输出: 10

가변 변수

가변변수란 목록, 사전 등 생성 후 값을 수정할 수 있는 변수를 말한다. 내부 함수에서 외부 함수의 가변 변수를 수정하면 외부 함수의 원래 변수도 실제로 수정하게 됩니다. 왜냐하면 외부 함수는 메모리에서 동일한 객체이기 때문입니다.

def outer_function():
    lst = [1, 2, 3]  # 可变列表
    def inner_function():
        lst.append(4)  # 修改外部函数的可变列表
    inner_function()
    print(lst) # 输出[1, 2, 3, 4]

추천

출처blog.csdn.net/hu_wei123/article/details/131909480