我想知道Python是否提供与Perl中的 package 关键字相似的东西。实际上,此关键字会在代码中的任何地方创建一个带标签的名称空间。
据我所知,只有通过将该代码放入文件并导入,才能在Python中实现类似的命名空间。但是,如果我将代码包含在变量中(例如,从脚本的某些配置文件中读取),该怎么办?
因此,换句话说:有没有办法在任意命名空间中评估Python代码?在Perl中,我只会添加
package my_pack;
在该代码的开头,然后对其进行评估(在名为 my_pack 的命名空间中)
感谢您的帮助。
答案 0 :(得分:0)
不,Perl和Python的模块系统工作原理大不相同。无法显式声明特定的Python模块。
对于应该在特定模块的上下文中执行代码的Python eval()
或exec()
,请考虑哪些方面为您的目的定义了此模块-重要的方面可能是该模块的全局变量。您可以显式提供这些内容,并通过globals()
函数捕获当前环境。环境只是一个字典,如果要避免修改模块的环境,可以复制该字典。