【发布时间】:2023-03-17 17:11:01
【问题描述】:
我想知道,Python 是否提供类似于 Perl 中的 package 关键字的功能。这个关键字实际上在代码中的任何地方创建了一个带标签的命名空间。
据我所知,Python 中类似的命名空间只有通过将代码放入文件并导入才能实现。但是如果我在变量中有代码(例如,从我的脚本的某个配置文件中读取)怎么办?
换句话说:有没有办法在任意命名空间内评估 Python 代码?在 Perl 中我会添加
package my_pack;
在该代码的开头,然后对其进行评估(在名为 my_pack 的命名空间内)
感谢您的帮助。
【问题讨论】:
-
'一些配置文件'不能分配新变量;您必须为此在当前脚本中分配一个变量。所以这永远不会导致名称冲突。或者产生您所指问题的具体代码是什么?
-
如果我使用 eval 执行 Python 代码(我从脚本的某个配置文件中读取),该代码可以做任何事情,包括定义子例程和变量。
-
啊,
eval,同意(并反对!)。 -
ug。这是一种糟糕的配置文件方式
-
我不想用所有的细节来打扰你。我的脚本是一个允许用户在配置文件中定义按钮和其他小部件的应用程序。每个小部件都与用户也可以定义的代码相关联。然后所有这些小部件都显示在 GUI 中(因此是用户可配置的)。所以我想知道的是,是否有等效于 package 关键字?
标签: python namespaces package