——這篇文章最主要的目的是將在Python學(xué)習(xí)中的相關(guān)知識(shí)要點(diǎn)做下相關(guān)記錄犹菇,方便今后查詢以及提醒自己撬腾。
版本問(wèn)題
- 對(duì)于Python而言,其語(yǔ)法版本從2.7.X到3.X發(fā)生了較大的改變,對(duì)于輸出等類似問(wèn)題顺囊,一定要區(qū)分開(kāi)來(lái)版本,這樣進(jìn)行編譯的時(shí)候就不會(huì)產(chǎn)生用2.7.X的編譯器對(duì)以3.X的語(yǔ)法書寫的代碼編譯的時(shí)候出錯(cuò)了蕉拢,例如:
@Example
# python - 3.x
# print("\rEpisode {}/{}.".format(i_episode + 1, num_episodes), end="")
# python - 2.7.x
print "\rEpisode {}/{}.".format(i_episode + 1, num_episodes), "\n"
上述的代買就是對(duì)于print
在兩個(gè)版本下的語(yǔ)法規(guī)則的一個(gè)很好演示特碳。
縮進(jìn)問(wèn)題
-
縮進(jìn)
是整個(gè)Python中基本語(yǔ)法的核心點(diǎn)之一诚亚,相較于C++、JAVA這類語(yǔ)言的鮮明{}
將整個(gè)函數(shù)體/循環(huán)體/判斷體
囊括其中午乓,Python以十分簡(jiǎn)介的形式將這一點(diǎn)進(jìn)行了簡(jiǎn)化站宗,如下所示:
@Example
# 循環(huán)體是以首位置的縮進(jìn)來(lái)進(jìn)行標(biāo)識(shí)的
for x in range(10):
print(x)
下劃線 問(wèn)題
Python 用下劃線作為變量前綴和后綴指定特殊變量/方法(函數(shù))。
-
其常用形式有以下四種:
-
不帶下劃線形式的益愈,代表變量/方法是等同于C++/JAVA 中的
public
對(duì)象份乒。
例如:
object
、def cal(it)
這樣的方式腕唧。
+ 以雙
下劃線開(kāi)始和結(jié)尾的或辖,這種情況比較特殊,常見(jiàn)于Python的內(nèi)部庫(kù)/系統(tǒng)使用枣接,我們普通Coder應(yīng)盡量避免使用這種標(biāo)識(shí)颂暇;但是要注意在class
的內(nèi)部定義__init__(self)
的初始化構(gòu)造函數(shù)的時(shí)候是必須要加上雙下劃線的。
> 例如:
python @example def __init__(self): pass XXXXXXXXXX
+ 以雙下劃線開(kāi)始的但惶,這種變量/方法同樣是被定義成private
屬性的耳鸯,但要注意的是由于Python中是不存在類似于C++/Java中的protected
表示符的,僅有public
和private
膀曾,即變量/方法的標(biāo)識(shí)僅能二選一县爬,但這之中需要注意的是:private
并非如C++/Java中那樣絕對(duì)不可訪問(wèn),通過(guò)name mangling
(稱為“名稱改編”(目的就是以防子類意外重寫基類的方法或者屬性)添谊,即前面加上單下劃線+雙下劃線+類名,eg:_Class__object
)機(jī)制是仍然可以訪問(wèn)private
對(duì)象的财喳,所以在這里一定要區(qū)分這種用法。
+ 以單下劃線開(kāi)始的斩狱,這種變量/方法即是常用的private
屬性標(biāo)識(shí)的耳高,而這種方法也是python中在class
中對(duì)于僅可通過(guò)內(nèi)部方法/對(duì)象調(diào)用的對(duì)象/方法的推崇。 -
不帶下劃線形式的益愈,代表變量/方法是等同于C++/JAVA 中的
總結(jié)而言:
- 以單下劃線開(kāi)頭的
_foo
的代表不能直接訪問(wèn)的類屬性所踊,需通過(guò)類提供的接口進(jìn)行訪問(wèn)泌枪,不能用from xxx import *
而導(dǎo)入;- 以雙下劃線開(kāi)頭的
__foo
代表類的私有成員秕岛;- 以雙下劃線開(kāi)頭和結(jié)尾的
__foo__
代表python里特殊方法專用的標(biāo)識(shí)碌燕,如__init__()
代表類的構(gòu)造函數(shù)。