2-1 正規(guī)地說一句話
- python中包含哪些語句
1 . 賦值語句
2 . if語句镶奉,當條件成立時運行語句塊础淤。經(jīng)常與else, elif(相當于else if)配合使用。
3 . for語句哨苛,遍列列表鸽凶、字符串、字典建峭、集合等迭代器玻侥,依次處理迭代器中的每個元素。
4 . while語句亿蒸,當條件為真時凑兰,循環(huán)運行語句塊。
5 . try語句祝懂。與except, finally, else配合使用處理在程序運行中出現(xiàn)的異常情況票摇。
6 . class語句。用于定義類型砚蓬。
7 . def語句矢门。用于定義函數(shù)和類型的方法。
8 . pass語句。表示此行為空祟剔,不運行任何操作隔躲。
9 . assert語句。用于程序調(diào)適階段時測試運行條件是否滿足物延。
10 . with語句宣旱。Python2.6以后定義的語法,在一個場景中運行語句塊叛薯。比如浑吟,運行語句塊前加鎖,然后在語句塊運行退出后釋放鎖耗溜。
11 . yield語句组力。在迭代器函數(shù)內(nèi)使用,用于返回一個元素抖拴。
12 . raise語句燎字。拋出一個異常。
13 . import語句阿宅。導入一個模塊或包候衍。常用寫法:from module import name, import module as name, from module import name as anothername - 序列賦值
如果左邊的變量是序列,右邊的對象也是序列洒放,兩者將一一對應地進行賦值
2-2 print能干的事情
- eval
help(eval)
把字符串中符合python表達式的東西計算出來
- print詳解
1 . %d蛉鹿,只能輸出整數(shù),int類型
2 . %4d,要求該整數(shù)占有四個位置拉馋,若整數(shù)位數(shù)不夠榨为,在前面增加空格
3 . %f惨好,輸出浮點數(shù)
4 . %.2f煌茴,按要求輸出小數(shù)位數(shù),如果要求的小數(shù)位數(shù)過多日川,后面就用0補全 - print3蔓腐,請用print(),要加個括號
- print有一個特點龄句,就是輸出的時候回论,每行后面都自動加上一個換行符號\n,
加逗號可取消換行
2-3 從格式化表達式到方法
- %表達的一種輸出格式化表達式
str.format分歇,表達一種格式化方法 - 基本的操作
所謂格式化方法傀蓉,就是可以先建立一個輸出字符串的模板,然后用format來填充模板的內(nèi)容
2-6 難以想象的for
- for的基本操作
1 . for是用來循環(huán)的职抡,是從某個對象那里依次將元素讀取出來
2 . for支持str葬燎、list、set、tuple谱净、dict窑邦、文件、列表解析式
2-7關(guān)于循環(huán)的小伎倆
- range
- zip
1 . zip()的作用就是把list1和list2兩個對象中的對應元素放到一個元組(a,b)中
2 . zip(*)壕探,zip的反向操作冈钦,解壓縮
3 . enumerate
2-8 讓人歡喜讓人憂的迭代
1 . 循環(huán)(loop),指的是在滿足條件的情況下李请,重復執(zhí)行同一段代碼瞧筛。比如,while語句导盅。
2 . 迭代(iterate)驾窟,指的是按照某種順序逐個訪問列表中的每一項。比如认轨,for語句绅络。
3 . 遞歸(recursion),指的是一個函數(shù)不斷調(diào)用自身的行為嘁字。比如恩急,以編程方式輸出著名的斐波納契數(shù)列。
4 . 遍歷(traversal)纪蜒,指的是按照一定的規(guī)則訪問樹形結(jié)構(gòu)中的每個節(jié)點衷恭,而且每個節(jié)點都只訪問一次。
- 逐個訪問
可迭代對象:常常將那些能夠用for來一個一個讀取元素的對象纯续,就稱之為可迭代的對象随珠。那么for也就被稱之為迭代工具。所謂迭代工具猬错,就是能夠按照一定順序掃描迭代對象的每個元素(按照從左到右的順序)
2-9 大話題小函數(shù)(1)
- lambda
1 . 在lambda后面直接跟變量
2 . 變量后面是冒號
3 . 冒號后面是表達式窗看,表達式計算結(jié)果就是本函數(shù)的返回值
- map
基本樣式是:map(func, seq),func是一個函數(shù)倦炒,seq是一個序列對象显沈。
在執(zhí)行的時候,序列對象中的每個元素逢唤,按照從左到右的順序拉讯,依次被取出來,并塞入到func那個函數(shù)里面鳖藕,并將func的返回值依次存到一個list中
2-10 大話題小函數(shù)(2)
- reduce
map是上下運算魔慷,reduce是橫著逐個元素進行運算,并產(chǎn)生單個值 - filter
2-11 Python文檔
- 查看python文檔
1 .
dir(list)
help(list._____mul_)
2 .
還有一個文檔:doc,help調(diào)用的其實就是這個函數(shù)里面的內(nèi)容
print(list._____mul_._____doc_)
- 給自己的程序加上文檔
在你所編寫的程序中用三個雙引號或者單引號成對地出現(xiàn)著恩,中間寫上有關(guān)文檔內(nèi)容院尔。
2-12 重回函數(shù)
- 函數(shù)的基本結(jié)構(gòu)
參宿的意義完全取決于對象的類型纹烹。在python中,將這種依賴關(guān)系召边,稱之為多態(tài)
python中為對象編寫接口铺呵,而不是為數(shù)據(jù)類型。 - 注意事項
空白行在交互模式提示符下很重要隧熙。模塊文件中符合語句內(nèi)的空白行常被忽視片挂。但是,當你在交互模式提示符下輸入代碼時贞盯,空白行則是會結(jié)束語句音念。
2-13 不確定參數(shù)的數(shù)量
- *arg
如果輸入的參數(shù)過多,其它參數(shù)全部通過*arg躏敢,以元組的形式傳給了參數(shù)(變量)arg闷愤。請看官注意,我這里用了一個模糊的詞語:參數(shù)(變量)件余,這樣的表述意思是讥脐,在傳入數(shù)據(jù)前,arg在函數(shù)頭部是參數(shù)啼器,當在函數(shù)語句中旬渠,又用到了它,就是變量
2-16 類的基本認識
- 面向?qū)ο?br> 對象指的是類的實例
2-17 編寫類之一創(chuàng)建實例
- 創(chuàng)建類
類的名稱一般用大寫字母開頭端壳,這是慣例
class Person:
def __init__(self, name, lang, website):
self.name = name
self.lang = lang
self.website = website
1 . 首先呈現(xiàn)出來的是一個名為:_init()
的函數(shù)告丢,注意,這個函數(shù)是以兩個下劃線開始损谦,然后是init岖免,最后以兩個下劃線結(jié)束。
2 . 類就是一種對象類型
3 . 在構(gòu)建Person類的時候照捡,首先要做的就是對這種類型進行初始化颅湘,也就是要說明這種類型的基本結(jié)構(gòu),一旦這個類型的對象被調(diào)用了麻敌,第一件事情就是要運行這個類型的基本結(jié)構(gòu)栅炒,也就是類Person的基本結(jié)構(gòu)
4 . 在類中掂摔,基本結(jié)構(gòu)是寫在_init()
這個函數(shù)里面术羔。故這個函數(shù)稱為構(gòu)造函數(shù),擔負著對類進行初始化的任務(wù)
5 . 當類Person實例化后立刻運行_init_()函數(shù)
類和實例
-
self的作用
1 . 在類內(nèi)部乙漓,我們會寫很多不同功能的函數(shù)级历,這些函數(shù)在類里面有另外一個名稱,曰:方法
2 . 通過類的構(gòu)造函數(shù)中的參數(shù)傳入的這些數(shù)據(jù)也想在各個方法中被使用叭披,就需要在類中長久保存并能隨時調(diào)用這些數(shù)據(jù)寥殖。為了解決這個問題玩讳,在類中,所有傳入的數(shù)據(jù)都賦給一個變量嚼贡,通常這個變量的名字是self
3 . 在構(gòu)造函數(shù)中的第一個參數(shù)self熏纯,就是起到了這個作用——接收實例化過程中傳入的所有數(shù)據(jù),這些數(shù)據(jù)是通過構(gòu)造函數(shù)后面的參數(shù)導入的粤策。顯然樟澜,self應該就是一個實例(準確說法是應用實例),因為它所對應的就是具體數(shù)據(jù)類的實例info對應著self叮盘,info通過self導入實例屬性的所有數(shù)據(jù)
self.name中的name和構(gòu)造函數(shù)的參數(shù)name沒有任何關(guān)系秩贰,它們兩個一樣,只不過是一種起巧合(經(jīng)常巧合)柔吼,或者說是寫代碼的人懶惰毒费,不想另外取名字而已,無他
2-18 編寫類之二方法
- 編寫和操作方法
編寫方法的過程和編寫一個函數(shù)的過程一樣愈魏,需要注意的就是要在參數(shù)列表中第一個寫上self觅玻,即使沒有其它的參數(shù)
2-20 編寫類之四再論繼承
2-21 命名空間
- 所謂的命名空間友鼻,就是這些命名(名稱)的集合傻昙,它們分別與相應的對象有對應關(guān)系
- 命名空間是從所定義的命名到對象的映射集合
- 程序在查詢上述三種命名空間的時候,就按照從里到外的順序彩扔,即:Local Namespaces --> Global Namesspaces --> Built-in Namesspaces
2-22 類的細節(jié)
- 綁定和無綁定方法
無綁定類方法對象:無self
綁定實例方法對象:有self - 調(diào)用綁定實例方法對象
- 調(diào)用無綁定類方法對象
不通過實例妆档,而是用類進行點號運算來獲得方法函數(shù)(ClassName.method_function)
調(diào)用的時候必須傳入實例做為第一參數(shù)
2-23 Import 模塊
- 認識模塊
import random
help(random) #在終端運行
https://docs.python.org/2/library/
2-24 模塊的加載
- import的工作流程
1 . 搜索。就是python要能夠找到import的模塊
2 . 編譯虫碉。找到模塊文件之后贾惦,將其編譯成字節(jié)碼,就是那個.pyc文件里面的敦捧。注意须板,不是什么時候都編譯的,只有第一次運行時候才編譯
3 . 運行
2-25 私有和專有
- 私有函數(shù)
以“__”雙劃線開頭的兢卵,將這類命名的函數(shù)/方法稱之為“私有函數(shù)”
1 . 私有函數(shù)不可以從它們的模塊外面被調(diào)用
2 . 私有類方法不能夠從它們的類外面被調(diào)用
3 . 私有屬性不能夠從它們的類外面被訪問 - 專有方法