python
類型與運(yùn)算
可變類型與不可變類型
- 核心類型中,數(shù)字钱烟、字符串和元組是不可變的;列表和字典不是這樣
- 可作用于多種類型的通用型操作都是以內(nèi)置函數(shù)或表達(dá)式的形式出現(xiàn)的[例如,len(X)菇怀,X[0]]
數(shù)據(jù)類型
字符串
列表
字典
元組tuple
- 基本上就像一個(gè)不可以改變的列表
- 從語(yǔ)法上講跟畅,它們編寫在圓括號(hào)中而不是方括號(hào)中咽筋,它們支持任意類型、任意嵌套以及常見的序列操作:
- 真正的不同之處就在于一旦創(chuàng)建后就不能再改變徊件。也就是說(shuō)奸攻,元組是不可變的序列:
文件
數(shù)字
傳統(tǒng)除法蒜危、Floor除法和真除法
類型屬于對(duì)象,而不是變量
Python的變量就是在特定的時(shí)間引用了一個(gè)特定的對(duì)象睹耐。
共享引用
此時(shí)辐赞,并不是替換了原始的a對(duì)象,而是讓這個(gè)變量去引用完全不同的一個(gè)對(duì)象,所以硝训,b的值并不會(huì)因此改變响委。
有一些對(duì)象和操作確實(shí)會(huì)在原處改變對(duì)象(可變對(duì)象,如列表等)窖梁。對(duì)于支持這種在原處修改的對(duì)象赘风,共享引用時(shí)的確需要加倍的小心,因?yàn)閷?duì)一個(gè)變量名的修改會(huì)影響其他的變量纵刘。
使用分片進(jìn)行copy
語(yǔ)句與語(yǔ)法
語(yǔ)句
賦值
這和分片內(nèi)在的相似邀窃,但是不完全相同——一個(gè)序列解包賦值總是返回多個(gè)匹配項(xiàng)的一個(gè)列表,而分片把相同類型的一個(gè)序列作為分片的對(duì)象返回:
迭代器和解析
列表解析
快于
python3中新的可迭代對(duì)象
函數(shù)
參數(shù)匹配法則
函數(shù)高級(jí)特征
遞歸
間接函數(shù)調(diào)用
內(nèi)省函數(shù)
函數(shù)自身的諸如名字的屬性
func.name
匿名函數(shù):lambda
由def創(chuàng)建并賦值后的函數(shù)對(duì)象工作起來(lái)是完全一樣的
不過(guò)假哎,·lambda是一個(gè)表達(dá)式瞬捕,而不是一個(gè)語(yǔ)句
在序列中映射函數(shù) map
函數(shù)式編程工具:filter和reduce
理解為過(guò)濾:
迭代和解析
列表表達(dá)式
列表解析和矩陣
生成器
生成器在內(nèi)存使用和性能方面都更好
函數(shù)包含一條yield語(yǔ)句,他們返回一個(gè)可迭代對(duì)象
生成器表達(dá)式:迭代器遇到列表解析
生成器表達(dá)式大體上可以認(rèn)為是對(duì)內(nèi)存空間的優(yōu)化舵抹,它們不需要像方括號(hào)的列表解析一樣山析,一次構(gòu)造出整個(gè)結(jié)果列表。它們?cè)趯?shí)際中運(yùn)行起來(lái)可能稍慢一些掏父,所以它們可能只對(duì)于非常大的結(jié)果集合的運(yùn)算來(lái)說(shuō)是最優(yōu)的選擇笋轨。關(guān)于性能的更權(quán)威的評(píng)價(jià),必須等到我們?cè)诒菊律院缶帉懹?jì)時(shí)腳本的時(shí)候給出赊淑。
生成器是單迭代器對(duì)象
這與某些內(nèi)置類型的行為不同爵政,它們支持多個(gè)迭代器并且在一個(gè)活動(dòng)迭代器中傳遞并反映它們的原處修改。