如何在另一Python脚本中获取被调用函数的内部变量值?
问题原因
你访问不到sum的核心原因是Python的作用域规则:函数内部定义的变量属于局部变量,仅在函数执行过程中在函数内部的命名空间生效,函数运行结束后局部变量就会被回收,外部代码(包括导入这个函数的main.py)没有权限直接访问函数内部的局部变量,所以直接打印sum会触发NameError。
额外提个编码注意点:sum是Python内置的求和函数名,不建议用它作为自定义变量名,容易引发意料之外的冲突报错。
解决方法
最规范、符合Python编码习惯的方案是用return关键字把函数内部计算得到的结果返回给调用方,不需要把打印逻辑写死在test.py里,外部调用函数时直接用变量接收返回值即可自由使用。
- 第一步:修改test.py中的函数,增加返回值逻辑
# test.py def display(var1,var2): sum_res = var1 + var2 print(sum_res) # 如果需要保留函数运行时的打印提示可以留着这行,不需要直接删除即可 return sum_res
- 第二步:修改main.py的调用逻辑,接收返回值后再做后续操作
# main.py from test import * calc_result = display(1,2) # 调用函数时,用变量接住返回的计算结果 print(calc_result) # 此时可以正常打印出计算结果3
不要尝试通过定义全局变量的方式跨作用域传值,这种写法会让代码的数据流变得极难追踪,后续维护时很容易出现莫名其妙的逻辑bug,通过函数返回值传递数据是最稳妥的方案。
内容的提问来源于stack exchange,提问作者principemestizo3
相关产品推荐
相关产品推荐

