首页 > 解决方案 > 是否有与 Perls 'package' 关键字等效的 Python

问题描述

我想知道,如果 Python 提供类似于Perl中的package关键字的东西。这个关键字实际上在代码的任何地方创建了一个带标签的命名空间。

据我所知,Python 中类似的命名空间只能通过将该代码放入文件并导入它来实现。但是如果我在变量中有代码(例如从我的脚本的某些配置文件中读取)怎么办?

换句话说:有没有办法在任意命名空间中评估 Python 代码?在 Perl 我只想添加

package my_pack;

在该代码的开头,然后对其进行评估(在名为my_pack的命名空间内)

谢谢你的帮助。

标签: pythonnamespacespackage

解决方案


不,Perl 和 Python 的模块系统的工作方式非常不同。无法显式声明特定的 Python 模块。

对于 Pythoneval()exec()应在特定模块的上下文中执行代码的 Python,请考虑哪些方面为您的目的定义了该模块——重要的方面可能是该模块的全局变量。globals()您可以显式提供这些,并通过该函数捕获当前环境。环境只是一个字典,如果你想避免修改模块的环境,你可以复制它。


推荐阅读