【发布时间】:2018-02-17 03:38:13
【问题描述】:
我在我根本不理解的 python 脚本中运行 python 脚本时遇到问题:
假设我们在同一个目录中有 2 个文件:'init.py' 和 'text.py'
init.py:
X = 5
print("init.py was run")
test.py:
exec(open("./init.py").read())
print("X = %s" %X)
如果我现在运行 test.py,我会得到
init.py 已运行
X = 5
但是,如果我将 test.py 更改为:
def func_call( filename):
exec(open(filename).read())
print("X = %s" %X)
func_call("./init.py")
我明白了:
init.py 已运行
Traceback(最近一次调用最后一次):
文件“test.py”,第 5 行,在
func_call("./init.py")文件“test.py”,第 3 行,在 func_call 中
print("X = %s" %X)NameError:名称“X”未定义
有人可以向我解释为什么这会导致不同的结果吗? 有解决方法吗? 我的目标是通过运行 python 脚本并访问该 python 脚本中设置的变量来初始化我的大部分变量。
【问题讨论】:
-
为什么不创建文件
const.py并导入它? -
这确实有效并解决了问题,谢谢!但是我仍然不明白为什么会这样......
标签: python python-3.x file exec