如何在Python中从另一个函数访问嵌套函数内部的变量?
Python跨函数访问局部变量的最简单实现
你给出的代码中,v是z函数内部嵌套的y函数的局部变量,默认只能在y的代码块内部访问,要在x函数里调用这个值,最简单的实现方案是将v声明为全局变量,同时记得触发y函数的执行完成赋值,修改后的代码如下:
def z(): def y(): # 声明v为全局变量 global v v = 10 # 调用y完成v的赋值 y() def x(): # 直接访问全局作用域的v即可 print(v) # 测试运行 z() x() # 输出结果:10
如果不想污染全局命名空间,也可以用返回值透传的方案,代码写法也非常简洁:
def z(): def y(): v = 10 return v return y() def x(): v = z() print(v) # 测试运行 x() # 输出结果:10
两种方案的差异:
- 全局变量方案改动最少,不需要修改x函数的原有逻辑,调用前先执行一次z函数即可
- 返回值透传方案没有额外全局变量,符合Python作用域规范,不需要预先执行其他函数
内容的提问来源于stack exchange,提问作者ProgrammerForFun
相关产品推荐
相关产品推荐

