python 模块命名空间_如何在python模块中执行导入而不污染其命名空间?
我正在開發一個用于處理一些科學數據的Python包。在其他模塊和包中有多個經常使用的類和函數,包括numpy,我幾乎需要在包的任何模塊中定義的每個函數。
Pythonic的處理方式是什么?我已經考慮過多種變體,但每個都有自己的缺點。
>從外部模塊導入Class1,Class2,function1,function2導入模塊級別的類
然后可以從每個功能輕松訪問導入的函數和類。另一方面,它們污染模塊命名空間,使dir(package.module)和幫助(package.module)與導入的函數混淆
>從外部模塊導入Class1,Class2,function1,function2導入功能級別的類
函數和類可以方便地訪問,并且不會污染模塊,但是在每個函數中從最多十個模塊導入看起來很多重復的代碼。
>使用import foreignmodule導入模塊級別的模塊
由于需要將模塊名稱添加到每個功能或類別調用中,所以不需要太多的污染。
>使用一些人工變通方法,例如對所有這些操作使用函數體,并僅返回要導出的對象…像這樣
def _export():
from foreignmodule import Class1, Class2, function1, function2
def myfunc(x):
return function1(x, function2(x))
return myfunc
myfunc = _export()
del _export
這就解決了這兩個問題,模塊命名空間污染和功能的易用性,但它似乎根本不是Pythonic。
那么什么解決方案是最堅定的?還有另一個好的解決方案我忽略了嗎?
總結
以上是生活随笔為你收集整理的python 模块命名空间_如何在python模块中执行导入而不污染其命名空间?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis指定配置文件启动_深入学习 R
- 下一篇: python算不算编程_Python 并