python中的單下劃線與雙下劃線以及絕對(duì)導(dǎo)入與相對(duì)導(dǎo)入
單下劃線與雙下劃線
在 python 中,會(huì)看到 _xx, xx 以及 __xx 這樣的變量或者函數(shù)名,在這里做一個(gè)簡(jiǎn)要的總結(jié)。
_xx
:保護(hù)(protected)變量或函數(shù),意思是只有類對(duì)象和子類對(duì)象能夠訪問到這些變量,不能用 ‘from module import *’ 導(dǎo)入。當(dāng)變量或函數(shù)是私有的時(shí)候,用 _xx 來表示是很好的習(xí)慣。;__xx
:私有成員,意思是只有類對(duì)象自己能訪問,連子類對(duì)象也不能訪問到這個(gè)數(shù)據(jù);_xx_
:代表 python 里特殊方法專用的標(biāo)識(shí),如 _init_() 代表類的構(gòu)造函數(shù)。變量名 _xx_ 對(duì) python 來說有特殊含義,對(duì)于普通的變量應(yīng)當(dāng)避免這種命名風(fēng)格。
下劃線對(duì)解釋器有特殊的意義,而且是內(nèi)建標(biāo)識(shí)符所使用的符號(hào),應(yīng)避免用下劃線作為變量名的開始。
絕對(duì)導(dǎo)入與相對(duì)導(dǎo)入
既然上文說到了包的導(dǎo)入,就順便把 python 的包內(nèi)導(dǎo)入規(guī)則說一下,分為絕對(duì)導(dǎo)入與相對(duì)導(dǎo)入。
- 相對(duì)導(dǎo)入:在不指明 package 名的情況下導(dǎo)入自己這個(gè) package 的模塊,比如一個(gè) package 下有 a.py 和 b.py 兩個(gè)文件,在 a.py 里 from . import b 即是相對(duì)導(dǎo)入 b.py;
- 絕對(duì)導(dǎo)入:指明頂層 package 名。比如 import a,python 會(huì)在 sys.path 里尋找所有名為 a 的頂層模塊。
在 3.0 以前的舊版本中啟用相對(duì)導(dǎo)入等特性所必須的 _future_ 語句:
from __future__ import absolute_import
python 包的概念:包含 _init_.py 文件的目錄,該文件在包導(dǎo)入時(shí)會(huì)被首先執(zhí)行,該文件可以為空,也可以在其中加入任意合法的 python 代碼。
相對(duì)導(dǎo)入的特點(diǎn):可以避免硬編碼帶來的維護(hù)問題,例如我們改了某一頂層包的名,那么其子包所有的導(dǎo)入就都不能用了。
但是 存在相對(duì)導(dǎo)入語句的模塊,不能直接運(yùn)行,否則會(huì)有異常:
ValueError: Attempted relative import in non-package
盡管使用相對(duì)導(dǎo)入看起來像是瀏覽文件系統(tǒng),但是不能到定義包的目錄之外。也就是說,使用點(diǎn)的這種模式從不是包的目錄中導(dǎo)入將會(huì)引發(fā)錯(cuò)誤。
絕對(duì)導(dǎo)入的特點(diǎn):可以避免與標(biāo)準(zhǔn)庫(kù)命名的沖突,實(shí)際上也不推薦自定義模塊與標(biāo)準(zhǔn)庫(kù)命令相同。
硬編碼的概念
與軟編碼的區(qū)別是,軟編碼可以在運(yùn)行時(shí)確定,修改;而硬編碼是不能夠改變的。
舉個(gè)例子:
例如求圓的面積問題,那么 3.14*r*r 就是硬編碼,而 PI*r*r 就不是硬編碼。
把數(shù)值寫成常數(shù)而不是變量即硬編碼。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python繪制多因子柱狀圖的實(shí)現(xiàn)示例
本文主要介紹了Python繪制多因子柱狀圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05python第三方庫(kù)easydict的使用實(shí)例詳解
在?Python?中當(dāng)我們需要訪問字典中的元素的時(shí)候,我們需要使用類似?a['example']?的形式來進(jìn)行使用,這個(gè)時(shí)候就可以使用 easydict 這個(gè)模塊了,今天通過本文給大家講解python第三方庫(kù)easydict的使用,感興趣的朋友跟隨小編一起看看吧2022-11-11Python利用folium實(shí)現(xiàn)地圖可視化
Folium是建立在Python生態(tài)系統(tǒng)的數(shù)據(jù)整理(Datawrangling)能力和Leaflet.js庫(kù)的映射能力之上的開源庫(kù)。這篇文章主要給大家介紹了關(guān)于如何Python利用folium實(shí)現(xiàn)地圖可視化的相關(guān)資料,需要的朋友可以參考下2021-05-05python 匿名函數(shù)與三元運(yùn)算學(xué)習(xí)筆記
這篇文章主要介紹了python 匿名函數(shù)與三元運(yùn)算的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python 編程,感興趣的朋友可以了解下2020-10-10django框架如何集成celery進(jìn)行開發(fā)
本文給大家詳細(xì)講解了在django框架中如何集成celery進(jìn)行開發(fā),步驟非常詳細(xì),有需要的小伙伴可以參考下2017-05-05python實(shí)現(xiàn)網(wǎng)頁自動(dòng)簽到功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)頁自動(dòng)簽到功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01