是否有一个与Perls'package'关键字等效的Python

时间:2018-08-07 07:21:41

标签: python namespaces package

我想知道Python是否提供与Perl中的 package 关键字相似的东西。实际上,此关键字会在代码中的任何地方创建一个带标签的名称空间。

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

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

package my_pack;

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不,Perl和Python的模块系统工作原理大不相同。无法显式声明特定的Python模块。

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

相关问题