我有一些代码,看起来像这样:限制Python的范围导入
from pyparsing import Word, alphas, Optional, ...
# Do stuff ...
# And at the end, save a result to the outside world.
parser = ...
# Now use parser but don't use anything else from pyparsing again.
我喜欢有打电话from <package> import <etc>
的方便,但我只希望它的代码非常小部分被使用。恐怕我会对命名空间污染做出贡献,因为我在同一个文件中有许多这样的小片段。
什么是Pythonic处理这种情况的方式?我仍然只是玩弄它,所以我宁愿不写和重写pyparsing.
很多次。
该技术的工作原理很简单,但很少见,许多开发人员会对使用函数从全局范围隐藏导入的做法感到畏惧。总之,我不确定这应该是一个推荐的做法。将函数放入函数通常只会在导入需要延迟的情况下完成(在调用函数时进行导入,而不是在加载模块时执行导入)。我指出了这一点,因为OP正在要求Pythonic的做法 - 还有其他技术可以在不本地化进口的情况下完成工作。 – 2012-04-28 04:23:23
@RaymondHettinger我的印象是,大多数开发人员根本就懒得隐藏全球范围内的进口商品。 (主要或者只是处理命名空间中的额外值,或者导入模块并使用'.0.''符号,可能带有as as aliasing。) –
Amber
2012-04-28 04:24:14
这真的取决于您是否期望用户运行''help(yourmodule )''或''dir(yourmodule)''来发现API。这两种API发现技术都受名称空间混乱的影响。 – 2012-04-28 04:28:55