我有一些代碼,看起來像這樣:限制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