python-3.x - Exec 不会使用在 exec 中定义的变量更新当前命名空间
问题描述
假设我有以下文件:
foo.py
x = 1
主文件
f():
exec(("foo.py").read())
print(x)
f()
如果我运行 main.py,我会得到“名称 x 未定义”。我知道这与 f() 是一个函数有关,因为如果我删除该函数并只运行 exec 并打印它就可以正常工作。如何让 exec 使用在 exec 正在运行的代码中声明的变量更新我当前的命名空间?
背景:我可以想象人们说我根本不想这样做,所以让我解释一下为什么我想要这种行为。我要执行的文件是 input1 = x、input2 = y、...、correct_output = z 形式的测试用例。我希望能够将测试用例文件的内容复制到学生的提交中,然后在对文件进行最少修改或不修改的情况下调用学生的函数。
例如,我可以将测试用例放在一个函数中,然后代替 exec,导入测试用例文件并运行该函数,但是当导师试图手动运行测试用例时,这需要额外点击几下,我最好避免。
解决方案
推荐阅读
- android - android studio预建库中的问题
- java - 邮递员被 Spring Boot CSRF 保护阻止
- javascript - VSCode 在选择任务时生成一个 task.json 条目
- react-native - 如何从 JSON API 获取数据到 React-Native 中的嵌套数组中
- flutter - Flutter 刷卡和翻转卡 - 状态问题
- log4j - ksql (confluent) 的 log4j.properties 文件的变化
- security - 使用推荐标头进行 CSRF 预防
- c# - 在 C# 中实现线程安全 Point3DCollection 的最佳方法
- python - Python中的随机数生成器
- javascript - WebExtension 访问加载的资源