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

Python如何跨独立py文件访问其他文件内定义的字典变量

报错原因

exec()执行外部代码时默认使用独立的局部作用域,names.py里定义的names变量不会落到当前运行脚本的可访问作用域内,因此触发变量不存在的报错。同时直接用exec()读取执行外部py文件本身就不是Python跨文件复用代码的标准方案,容易出作用域问题,也存在安全隐患。

正确实现方案(保留两个独立文件)

Python原生支持同目录下的模块导入机制,不需要用exec()就能跨文件访问变量,具体操作如下:

  • 无需改动names.py的原有内容,保持文件独立即可,原文件代码如下:
names = {}

names['males']=[
  "Bob",
  "Will",
  "John"
]
names['female']=[
  "Anna",
  "Lindsay",
  "Nicole",
]
  • 修改income.py的代码,通过标准导入语法引入names.py里的变量,有两种常用写法:
    第一种是直接导入整个模块:
    import names
    print(names.names["males"])
    
    第二种是直接导入目标变量,写法更简洁:
    from names import names
    print(names["males"])
    

修改完成后运行income.py,即可正常输出['Bob', 'Will', 'John'],不会再触发变量不存在的报错。

特殊说明:如果一定要用exec()实现(极度不推荐,仅作原理演示),需要手动指定执行作用域为当前全局作用域,写法为exec(open("names.py").read(), globals())。这种写法会污染当前脚本的命名空间,还存在任意代码执行风险,正式场景禁止使用。

内容的提问来源于stack exchange,提问作者Diogo Miranda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:15:13