Python 某个函数内有多个函数嵌套,主函数里的变量能被内部的其他函数像全局变量一样使用吗?

查看 217|回复 11
fzls   
子函数里面访问外面的变量是值捕获的,所以想要在里面修改外部主函数里的变量值,只能通过一个引用类型来作为中转,比如 dict 或者 class
class Wrapper(): pass
def func1():
def func2():
print(a) # 输出是 2
a = 2
wrapper_class.a = 2
wrapper_dict["a"] = 2
print("before func2", a, wrapper_class.a, wrapper_dict["a"])
func2()
print("after func2", a, wrapper_class.a, wrapper_dict["a"])
a = 1
# 使用一个 class 来保存变量
wrapper_class = Wrapper()
wrapper_class.a = 1
# 使用一个 dict 来保存
wrapper_dict = {}
wrapper_dict["a"] = 1
print("before func1", a, wrapper_class.a, wrapper_dict["a"])
func1()
print("after func1", a, wrapper_class.a, wrapper_dict["a"])
fzls   
或者像前面一样,用个 list 包一下,总之就是要用一个引用类型来保证值传递过去仍是同一个变量,从而完成修改
您需要登录后才可以回帖 登录 | 立即注册

返回顶部