You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:27:29