Python如何从其他py文件中导入并打印指定变量
问题原因
你当前写法失效有两个核心原因:
var1是定义在first_code()函数内部的局部变量,默认作用域仅在函数执行期间的函数内部生效,外部模块(包括import语句)默认无法直接访问函数内部的局部变量。from dir.test import *只会导入目标模块顶层全局作用域的公开对象,本身就不具备穿透函数作用域读取局部变量的能力,且这种通配符导入的方式很容易造成命名空间污染,生产代码不推荐使用。
另外age_var本身是test.py的顶层全局变量,只要导入写法正确本来就可以正常访问。
正确实现方式
根据var1的实际业务场景选对应方案即可:
方案1:var1为固定值,不依赖函数运行逻辑
直接把var1从函数内部挪到test.py的全局作用域,和age_var保持同级即可。
修改后的test.py示例:
age_var = 22 var1 = 'phone' # 移到全局作用域 def first_code(): var2= 'name' var3= 'last_name' # 保留剩余原有代码逻辑
test2.py里明确指定要导入的两个变量,不要用通配符导入:
from dir.test import var1, age_var print(var1) print(age_var)
方案2:var1是first_code运行时动态生成的值
这种场景不要强行把变量挪到全局,让函数执行完成后返回var1的值即可,这也是更符合函数设计规范的写法。
修改后的test.py示例:
age_var = 22 def first_code(): var1 = 'phone' var2= 'name' var3= 'last_name' # 保留剩余原有代码逻辑 return var1 # 函数执行结束返回var1的值
对应的test2.py写法:
from dir.test import age_var, first_code # 调用函数拿到动态生成的var1值 var1 = first_code() print(var1) print(age_var)
注意:不要尝试通过修改函数属性、或者其他黑魔法方式强行读取未执行函数的内部局部变量,这类写法可读性极差、兼容性差,完全不符合Python的编码规范。
内容的提问来源于stack exchange,提问作者mansour32
相关产品推荐
相关产品推荐

