使用全局参数理解exec语句

2024-06-12 03:52:09 发布

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

我有一个python脚本,我正在从其他人那里学习,并试图了解它运行时发生了什么

我在当前目录中有一个名为_version _uu.py的文件,其中包含以下行:

__version__ = "1.0"

在单独的脚本中,我有以下代码:

import os

gdict = {}
curr_dir = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(curr_dir, "__version__.py")) as f:
    exec(f.read(), gdict)

我对执行官的声明感到困惑。通过阅读文档,我的理解是gdict用于指定exec()函数可以使用哪些全局函数,并且由于它是空的,因此除了内置函数之外,exec()不应该有任何可用的函数。我原以为gdict将保持为空,但当我运行此代码,然后查看gdict.keys()时,我看到:

dict_keys(['__builtins__', '__version__'])

我知道f.read()正在创建一个名为“\uuuu version\uuuuuu”的全局变量,其值为“1.0”,但gdict是如何填充的


Tags: 文件path函数代码py脚本reados
1条回答
网友
1楼 · 发布于 2024-06-12 03:52:09

由于python字典是可变的,所以程序中的gdict会发生变化。运行exec(f.read(),gdict)时,所有可用的内置项都将添加到globals dict中,这在查看gdict.keys()时会反映出来

相关问题 更多 >