Python中規(guī)范定義命名空間的一些建議
API的設(shè)計是一個藝術(shù)活。往往需要其簡單、易懂、整潔、不累贅。
很多時候,我們在底層封裝一個方法給高層用,而其它的方法只是為了輔助這個方法的。
也就是說我們只需要暴露這個方法就行,不用關(guān)心這個方法是怎么實現(xiàn)的,不用關(guān)心其它輔助方法的存在。
在Python中,有幾種策略來保持命名空間的整潔。
1.變量命名用下劃線_開頭
下劃線_開頭的變量在其它模塊from xxx import *的時候不被import。
如果你看decimal的源碼,就會發(fā)現(xiàn)多次把import 的模塊弄成下劃線_開頭的別名。
http://hg.python.org/cpython/file/2.7/Lib/decimal.py
比如
import copy as _copy import math as _math import numbers as _numbers
這不是蛋疼,是為了不污染命名空間
2.定義__all__
python的魔術(shù)方法實在是靈活。
假設(shè)我模塊中有3個方法a(),b(),c()
我只是要暴露a而已,不需要暴露b和c。
這時__all__=[a]
在其它模塊from xxxmodule import *的時候就只import了a了。
而且在開發(fā)者閱讀源碼的時候,看到了__all__,一下子就知道要暴露的是哪些方法,而不是一堆代碼無從下手。
3.在使用了這個變量后刪掉
通過del xxx刪掉。
這樣在dir(xxxmodule)的時候就減少了dir出來滿屏的變量了。
同樣在decimal的源碼,可以看到使用了正則表達式模塊re之后,用del re刪掉了。
還有一種方法就是把import語句放在函數(shù)內(nèi),將其限制在局部作用域中。感覺這種方法不pythonic,就不推薦了。
相關(guān)文章
Tensorflow卷積實現(xiàn)原理+手寫python代碼實現(xiàn)卷積教程
這篇文章主要介紹了Tensorflow卷積實現(xiàn)原理+手寫python代碼實現(xiàn)卷積教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Windows下安裝python2.7及科學(xué)計算套裝
這篇文章主要向大家介紹的是在windows系統(tǒng)下安裝python 2.7以及numpy安裝、six安裝、dateutil安裝、pyparsing安裝、matplotlib安裝和scipy安裝的方法,分享給大家,需要的小伙伴可以參考下,相對來說,windows下的安裝還是比較簡單的。2015-03-03將字典轉(zhuǎn)換為DataFrame并進行頻次統(tǒng)計的方法
下面小編就為大家分享一篇將字典轉(zhuǎn)換為DataFrame并進行頻次統(tǒng)計的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04關(guān)于numpy和torch.tensor的張量的操作
這篇文章主要介紹了關(guān)于numpy和torch.tensor的張量的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Python?NumPy教程之數(shù)據(jù)類型對象詳解
每個?ndarray?都有一個關(guān)聯(lián)的數(shù)據(jù)類型?(dtype)?對象。這個數(shù)據(jù)類型對象(dtype)告訴我們數(shù)組的布局。本文將通過示例詳細講講NumPy的數(shù)據(jù)類型對象,需要的可以參考一下2022-08-08