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