龙空技术网

python 嵌套内部函数修改外部函数的变量办法-容器类型变量

平行宇宙真相 13

前言:

当前同学们对“python 调用另一个py的变量”大体比较关注,朋友们都需要分析一些“python 调用另一个py的变量”的相关知识。那么小编同时在网络上收集了一些关于“python 调用另一个py的变量””的相关内容,希望小伙伴们能喜欢,你们快快来学习一下吧!

在 Python 中,内部函数通常是可以访问外部函数的变量的。这种能力被称为闭包(closure)。但是,如果在内部函数内尝试更改外部函数中的不可变类型变量(例如数字、字符串、元组等),会导致 Python 将其视为新的局部变量。

下面是一个示例,说明了当尝试在内部函数内更改外部函数中的变量时会发生的情况:

def outer_function():    outer_variable = 10  # 在外部函数中定义的变量    def inner_function():        # 尝试在内部函数中更改外部函数的变量        print(outer_variable)        return outer_variable * 2    return inner_function# 调用外部函数来获取内部函数inner_func = outer_function()result = inner_func()print(result)

输出结果:

D:\Programs\python64\python.exe E:\pythonPicscope\test1.py 1020进程已结束,退出代码为 0

如果尝试修改外部变量,会出错! 只能引用,不能修改,如果需要修改,需要引入列表

def outer_function():    outer_variable = 10  # 在外部函数中定义的变量    def inner_function():        # 尝试在内部函数中更改外部函数的变量        print(outer_variable)        outer_variable = 5       # 尝试修改外部变量的值        return outer_variable * 2    return inner_function# 调用外部函数来获取内部函数inner_func = outer_function()result = inner_func()print(result)

运行结果:

D:\Programs\python64\python.exe E:\pythonPicscope\test1.pyTraceback (most recent call last):File "E:\pythonPicscope\test1.py", line 14, in <module>result = inner_func()^^^^^^^^^^^^File "E:\pythonPicscope\test1.py", line 6, in inner_functionprint(outer_variable)^^^^^^^^^^^^^^UnboundLocalError: cannot access local variable 'outer_variable' where it is not associated with a value进程已结束,退出代码为 1

尝试修改外部变量:

为了在内部函数中更改外部函数中的不可变类型变量,可以使用容器类型变量(如列表),从而在内部函数中更改其内容。以下是一个示例:

def outer_function():    outer_variable = [10]  # 在外部函数中定义的列表,可变类型    def inner_function():        outer_variable[0] += 5  # 修改列表中的值    # 调用内部函数    inner_function()    print(outer_variable[0])  # 输出结果将是 15outer_function()

结果:

D:\Programs\python64\python.exe E:\pythonPicscope\test1.py15进程已结束,退出代码为 0

通过使用容器类型变量,实现了外部变量的修改!!!

标签: #python 调用另一个py的变量