python中的單下劃線與雙下劃線以及絕對導(dǎo)入與相對導(dǎo)入
單下劃線與雙下劃線
在 python 中,會看到 _xx, xx 以及 __xx 這樣的變量或者函數(shù)名,在這里做一個簡要的總結(jié)。
_xx
:保護(protected)變量或函數(shù),意思是只有類對象和子類對象能夠訪問到這些變量,不能用 ‘from module import *’ 導(dǎo)入。當變量或函數(shù)是私有的時候,用 _xx 來表示是很好的習(xí)慣。;__xx
:私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數(shù)據(jù);_xx_
:代表 python 里特殊方法專用的標識,如 _init_() 代表類的構(gòu)造函數(shù)。變量名 _xx_ 對 python 來說有特殊含義,對于普通的變量應(yīng)當避免這種命名風格。
下劃線對解釋器有特殊的意義,而且是內(nèi)建標識符所使用的符號,應(yīng)避免用下劃線作為變量名的開始。
絕對導(dǎo)入與相對導(dǎo)入
既然上文說到了包的導(dǎo)入,就順便把 python 的包內(nèi)導(dǎo)入規(guī)則說一下,分為絕對導(dǎo)入與相對導(dǎo)入。
- 相對導(dǎo)入:在不指明 package 名的情況下導(dǎo)入自己這個 package 的模塊,比如一個 package 下有 a.py 和 b.py 兩個文件,在 a.py 里 from . import b 即是相對導(dǎo)入 b.py;
- 絕對導(dǎo)入:指明頂層 package 名。比如 import a,python 會在 sys.path 里尋找所有名為 a 的頂層模塊。
在 3.0 以前的舊版本中啟用相對導(dǎo)入等特性所必須的 _future_ 語句:
from __future__ import absolute_import
python 包的概念:包含 _init_.py 文件的目錄,該文件在包導(dǎo)入時會被首先執(zhí)行,該文件可以為空,也可以在其中加入任意合法的 python 代碼。
相對導(dǎo)入的特點:可以避免硬編碼帶來的維護問題,例如我們改了某一頂層包的名,那么其子包所有的導(dǎo)入就都不能用了。
但是 存在相對導(dǎo)入語句的模塊,不能直接運行,否則會有異常:
ValueError: Attempted relative import in non-package
盡管使用相對導(dǎo)入看起來像是瀏覽文件系統(tǒng),但是不能到定義包的目錄之外。也就是說,使用點的這種模式從不是包的目錄中導(dǎo)入將會引發(fā)錯誤。
絕對導(dǎo)入的特點:可以避免與標準庫命名的沖突,實際上也不推薦自定義模塊與標準庫命令相同。
硬編碼的概念
與軟編碼的區(qū)別是,軟編碼可以在運行時確定,修改;而硬編碼是不能夠改變的。
舉個例子:
例如求圓的面積問題,那么 3.14*r*r 就是硬編碼,而 PI*r*r 就不是硬編碼。
把數(shù)值寫成常數(shù)而不是變量即硬編碼。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 匿名函數(shù)與三元運算學(xué)習(xí)筆記
這篇文章主要介紹了python 匿名函數(shù)與三元運算的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python 編程,感興趣的朋友可以了解下2020-10-10