認(rèn)識(shí)Python
語法簡(jiǎn)潔、內(nèi)置數(shù)據(jù)結(jié)構(gòu)豐富、無需編譯、一切都是對(duì)象、跨平臺(tái)、豐富的生態(tài)和第三方庫、可與C/C++/Java集成
python包索引(PyPI)提供了超過10萬個(gè)代碼庫的包,它能夠幫助python程序員
完成許多工作。1 type()用來指出你想要知道的東西的類型,比如查看數(shù)據(jù)類型布爾型、字符串、整數(shù)、浮點(diǎn)數(shù)
2 dir()python的內(nèi)置函數(shù)等有很多,使用dir()就可以查看對(duì)象內(nèi)所有屬性及方法(python中所有東西都是對(duì)象,比如函數(shù),模塊,數(shù)據(jù)類型等,都有自己的屬性和方法)
3 help()從名字就能看出來,help()是用來幫助的,比如查看字符串的幫助?
Python二進(jìn)制表示和位操作
byte_chinese = chinese.encode() //獲取字節(jié)數(shù)組
l = [bin(int(i)) for i in byte_chinese] //獲取一個(gè)二進(jìn)制列表
print(" ".join(l)) //列表轉(zhuǎn)成字符串并打印
變量
在高級(jí)語言中,變量是對(duì)內(nèi)存及其地址的抽象。Python的一切變量都是對(duì)象,變量的存儲(chǔ),采用了引用語義的方式,存儲(chǔ)的只是變量的值所在的內(nèi)存地址,而不是這個(gè)變量的值本身。變量名只能包括字母,數(shù)字、下劃線,可以字母下劃線開頭,但不能數(shù)字開頭,變量名不能包括空格。
作用域
局部、全局、內(nèi)置、嵌套4種作用域。需要注意的是:在if-elif-else、for-else、while、try-except\try-finally等關(guān)鍵字的語句塊中并不會(huì)產(chǎn)成作用域。
搜索變量名的優(yōu)先級(jí):局部作用域 > 嵌套作用域 > 全局作用域 > 內(nèi)置作用域。globalVar = 100 #G global
def test_scope():
? ?enclosingVar = 200 #E enclosing? 子函數(shù)中可見,? 為實(shí)現(xiàn)閉包,而增加的。?
? ? ? ?def func():
? ? ? ? ? ? ?localVar = 300 #L local
print(__name__) #B built-in
數(shù)據(jù)結(jié)構(gòu)
元類型(數(shù)字、字符串) 容器類型(List、Tuple、Dictionary、Set、Frozenset)。字典(dict): 用 {} 包圍;?集合(set) 是一個(gè)數(shù)學(xué)概念,用set()創(chuàng)建,輸入一個(gè)列表。
列表(list),是序列對(duì)象,用[]包圍。元組(tuple),用()包圍,Tuple 和 List 非常類似,但tuple一旦創(chuàng)建完畢,就不能修改了。訪問模式: direct sequential random mapping運(yùn)算符:地板除 //
序列類型:字符串 列表 元組
序列功能函數(shù):enumerate len reversed zip?
控制語句
推導(dǎo)式comprehensions(又稱解析式) :列表解析式、列表(list)推導(dǎo)式字典(dict)推導(dǎo)式集合(set)推導(dǎo)式
x if c else y
for 為迭代而生異常結(jié)構(gòu)?:break return raise這些語句只會(huì)使程序跳出try/except/finally對(duì)應(yīng)的block;
finally的block總是在整個(gè)try/except之后執(zhí)行;return的結(jié)果可以被重寫;函數(shù)的返回值在finally之后才''返回";
字符集
世界上存在著多種編碼方式,同一個(gè)二進(jìn)制數(shù)字可以被解釋成不同的符號(hào)。因此,要想打開一個(gè)文本文件,就必須知道它的編碼方式,否則用錯(cuò)誤的編碼方式解讀,就會(huì)出現(xiàn)亂碼。
python2中默認(rèn)使用ascii,python3中string默認(rèn)使用的編碼就是utf-8
Unicode 只是一個(gè)符號(hào)集,它只規(guī)定了符號(hào)的二進(jìn)制代碼,卻沒有規(guī)定這個(gè)二進(jìn)制代碼應(yīng)該如何存儲(chǔ) 。UTF-8 就是在互聯(lián)網(wǎng)上使用最廣的一種 Unicode 的實(shí)現(xiàn)方式。
Python3 的utf-8格式是不帶BOM的,某些軟件,如notepad,在保存一個(gè)以UTF-8編碼的文件時(shí),會(huì)在文件開始的地方插入三個(gè)不可見的字符(0xEF 0xBB 0xBF,即BOM)Python,其解釋器本身是能處理BOM的,所以能正常執(zhí)行。
Python3 中文本字符和二進(jìn)制分別使用 str 和 bytes 進(jìn)行區(qū)分,也是使用 decode 和 encode 進(jìn)行相互轉(zhuǎn)換 :bytes-->str: decode過程? str-->bytes: encode過程?
庫函數(shù):print(id(x)) 打印內(nèi)存對(duì)象地址;type(c) 打印對(duì)象類型
深淺拷貝:對(duì)于數(shù)字和字符串而言,賦值、淺拷貝和深拷貝無意義,因?yàn)槠溆肋h(yuǎn)指向同一個(gè)內(nèi)存地址。
高級(jí)特性
函數(shù)編程、迭代器、生成器、閉包、裝飾器、元類