python如何处理嵌套py exec()中的变量

2024-10-03 21:34:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个“父”py文件,该文件可以在其上执行多个py文件。
如果我简化,结构如下所示。

parent.py
  - childeren1.py

parent.py内部,它以这种方式执行children1.py

**parent.py**

a = 0
with open ("children1.py", "r", encoding="utf-8") as file:
    exec(file.read())
file.close()
print(a)

在“children1.py”中

**children1.py**

a = 1

如果我运行parent.py,它将返回a=1,这是children1.py
的结果 不过我希望它是a=0

无论变量在exec()中是什么,我都可以在执行完成后清除children1.py中使用的变量吗?
我希望parent.py中的变量是绝对的


Tags: 文件pyreadaswith方式open结构
1条回答
网友
1楼 · 发布于 2024-10-03 21:34:18

看一下documentation。可以看到exec函数有两个可选参数。 文档中说“如果省略了可选部分,代码将在当前范围内执行”。 因此,children1.py文件中的变量a与parent.py文件中的变量a完全相同

如果不希望出现这种行为,则必须为全局和/或局部变量设置一些字典。例如,选择空字典会将parent.py更改为

with open ("test2.py", "r", encoding="utf-8") as file:
    exec(file.read(), {})
file.close()
print(a)

然后,程序结束时a的值为零

相关问题 更多 >