国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中規(guī)范定義命名空間的一些建議

2019-11-25 16:45:30
字體:
供稿:網(wǎng)友

API的設(shè)計(jì)是一個(gè)藝術(shù)活。往往需要其簡(jiǎn)單、易懂、整潔、不累贅。
很多時(shí)候,我們?cè)诘讓臃庋b一個(gè)方法給高層用,而其它的方法只是為了輔助這個(gè)方法的。
也就是說我們只需要暴露這個(gè)方法就行,不用關(guān)心這個(gè)方法是怎么實(shí)現(xiàn)的,不用關(guān)心其它輔助方法的存在。
在Python中,有幾種策略來保持命名空間的整潔。

1.變量命名用下劃線_開頭
下劃線_開頭的變量在其它模塊from xxx import *的時(shí)候不被import。
如果你看decimal的源碼,就會(huì)發(fā)現(xiàn)多次把import 的模塊弄成下劃線_開頭的別名。
http://hg.python.org/cpython/file/2.7/Lib/decimal.py
比如

import copy as _copyimport math as _mathimport numbers as _numbers

這不是蛋疼,是為了不污染命名空間

2.定義__all__
python的魔術(shù)方法實(shí)在是靈活。
假設(shè)我模塊中有3個(gè)方法a(),b(),c()
我只是要暴露a而已,不需要暴露b和c。
這時(shí)__all__=[a]
在其它模塊from xxxmodule import *的時(shí)候就只import了a了。
而且在開發(fā)者閱讀源碼的時(shí)候,看到了__all__,一下子就知道要暴露的是哪些方法,而不是一堆代碼無從下手。

3.在使用了這個(gè)變量后刪掉
通過del xxx刪掉。
這樣在dir(xxxmodule)的時(shí)候就減少了dir出來滿屏的變量了。
同樣在decimal的源碼,可以看到使用了正則表達(dá)式模塊re之后,用del re刪掉了。
還有一種方法就是把import語句放在函數(shù)內(nèi),將其限制在局部作用域中。感覺這種方法不pythonic,就不推薦了。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹤山市| 长春市| 梨树县| 盘山县| 临安市| 屯门区| 仁布县| 上虞市| 岗巴县| 乐都县| 宿迁市| 怀化市| 措美县| 信阳市| 林州市| 闵行区| 天水市| 景洪市| 晋江市| 镇坪县| 如皋市| 会泽县| 漾濞| 四子王旗| 绥宁县| 五华县| 云浮市| 延吉市| 东乌珠穆沁旗| 榆中县| 江城| 永安市| 关岭| 崇左市| 临江市| 漯河市| 青川县| 平利县| 炎陵县| 湖口县| 衡南县|