日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python知识点总结全_【转】Python高级知识点总结

發(fā)布時(shí)間:2024/9/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python知识点总结全_【转】Python高级知识点总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、可迭代對(duì)象、迭代器對(duì)象和生成器

像list, tuple等這些序列是可以使用for...in ...語(yǔ)句來(lái)進(jìn)行遍歷輸出的。這是為什么呢?這就需要知道可迭代對(duì)象(Iterable)、迭代器對(duì)象(Iterator)和生成器對(duì)象(Generator)了。

1.什么可迭代對(duì)象?

把可以通過(guò)for...in...這類語(yǔ)句迭代讀取一條數(shù)據(jù)供我們使用的對(duì)象。

2. 可迭代對(duì)象的本質(zhì)?

可迭代對(duì)象通過(guò)__iter__方法向我們提供一個(gè)迭代器,我們?cè)诘粋€(gè)可迭代對(duì)象的時(shí)候,實(shí)際上就是先獲取該對(duì)象提供的一個(gè)迭代器,然后通過(guò)這個(gè)迭代器來(lái)依次獲取對(duì)象中的每一個(gè)數(shù)據(jù)。

也就是說(shuō)可迭代對(duì)象必須要有__iter__()方法

3.iter()函數(shù)與next()函數(shù)的作用是什么?

通過(guò)iter()函數(shù)獲取可迭代對(duì)象的迭代器。

然后我們可以對(duì)獲取到的迭代器不斷使用next()函數(shù)來(lái)獲取下一條數(shù)據(jù)。當(dāng)我們已經(jīng)迭代完最后一個(gè)數(shù)據(jù)之后,再次調(diào)用next()函數(shù)會(huì)拋出StopIteration異常,

來(lái)告訴我們所有數(shù)據(jù)都已迭代完成,不用再執(zhí)行next()函數(shù)了。

4.什么是迭代器對(duì)象?

一個(gè)實(shí)現(xiàn)了__iter__方法和__next__方法的對(duì)象,就是迭代器。

5. 什么是生成器?

簡(jiǎn)單來(lái)說(shuō):只要在def中有yield關(guān)鍵字的 就稱為生成器

6.yield的作用是什么?

yield關(guān)鍵字有兩點(diǎn)作用:

(1).保存當(dāng)前運(yùn)行狀態(tài)(斷點(diǎn)),然后暫停執(zhí)行,即將生成器(函數(shù))掛起

(2).將yield關(guān)鍵字后面表達(dá)式的值作為返回值返回,此時(shí)可以理解為起到了return的作用

Python2中的原生協(xié)程就是使用yield關(guān)鍵字,但在Python3中是使用了yield from。

7.如果啟動(dòng)生成器?

send():除了能喚醒生成器外,還可以給生成器傳遞值;

next():單純的獲取生成器中的一個(gè)值。

二、GIL

前言:了解Python的都知道,在Python中多線程并不是真正意義上的多線程。那為什么在Python中多線程的威力沒有像其他語(yǔ)言那樣大呢?

1.GIL全稱是全局解釋器鎖,保證了同一時(shí)刻只有一個(gè)線程在執(zhí)行。

2.作用:在單核的情況下實(shí)現(xiàn)多任務(wù)!這在當(dāng)時(shí)非常厲害的技術(shù)。

3.產(chǎn)生問題的原因:一個(gè)CPU分配給一個(gè)進(jìn)程,進(jìn)程的線程使用GIL進(jìn)行資源搶奪。在多核情況下,會(huì)使其他核空閑,CPU的利用率不高。

4.解決方案:

1). 使用其他解釋器,如JPython(但是太慢了,不好!)。因?yàn)橹挥性贑Python中才存在GIL。

2). 使用其他語(yǔ)言(C/Java)來(lái)寫多線程這部分代碼

3). 使用多進(jìn)程+協(xié)程的方式。(推薦的方式,很高效)!

三、淺拷貝VS深拷貝

深拷貝(deepcopy):它是一種遞歸的方式拷貝某個(gè)對(duì)象,單獨(dú)形成一個(gè)新對(duì)象。這種方式很浪費(fèi)資源。使用from some_moudle import xx 就是一種深拷貝的方式!

淺拷貝(copy):它支復(fù)制一層信息,占用的資源少!而且大部分的形式都是一淺拷貝的方式!

深拷貝示意圖:

淺拷貝示意圖:

四、面向?qū)ο罂偨Y(jié):

1.私有化

(1).x:公有變量;

(2)._x:單個(gè)前置下劃線,私有化方法或?qū)傩?#xff0c;from some_module import *是不能導(dǎo)入的,只有類和對(duì)象可以訪問;

(3).__x:雙前置下劃線,避免與子類中的屬性命名沖突,外部無(wú)法訪問,但是可以通過(guò)特殊的方式(obj._類名__xx)訪問到

(4).__x__:雙前后下劃線,用戶名字空間的魔法方法后屬性。最好不要用這種命名方式!

(5).x_:單后置下劃線,用于避免與Python關(guān)鍵詞沖突!不要使用哦!

2.封裝

一個(gè)功能一個(gè)函數(shù),把相關(guān)函數(shù)封裝成一個(gè)類對(duì)象。好處是代碼可以復(fù)用,讓代碼更加清爽!

3.繼承:

多個(gè)子類擁有相同的功能,然后把相同的函數(shù)放到父類中,通過(guò)子類的方式繼承下來(lái)。好處是代碼復(fù)用。

4.多態(tài):

(1).必須要有繼承;

(2).不同對(duì)象調(diào)用同一個(gè)函數(shù),會(huì)有不同的表現(xiàn)形式;

(3).Python中的多態(tài)并不是嚴(yán)謹(jǐn)?shù)亩鄳B(tài),因?yàn)闆]有做類型檢查!

5.類與實(shí)例對(duì)象之間的關(guān)系:

6.面向函數(shù)編程 VS 面向?qū)ο缶幊?#xff1a;

面向函數(shù)編程:一個(gè)功能,一個(gè)函數(shù)。

面向?qū)ο缶幊?#xff1a;把相關(guān)函數(shù)封裝成一個(gè)類對(duì)象。

五、模塊導(dǎo)入與路徑搜索

1.動(dòng)態(tài)導(dǎo)入:

(1). import module;

(2). __import__("some_module")

這兩種方式是一樣的!

2.路徑搜索:

在導(dǎo)入某個(gè)模塊時(shí),會(huì)在sys.path()中搜索目標(biāo)模塊。如果找到了,那么就停止搜索,否則一直找到最后!

3.重新加載模塊

from imp import reload,reload函數(shù)的好處是當(dāng)導(dǎo)入的某個(gè)模塊做了修改時(shí),又不想通過(guò)關(guān)機(jī)來(lái)重新導(dǎo)入,而是進(jìn)行熱更新,就能獲取到修改后的值!

六、類中方法總結(jié)

1.魔法方法

(1). __init__:用于初始化對(duì)象

(2). __new__:用于創(chuàng)建對(duì)象

(3).__call_:使對(duì)象變得可調(diào)用

(4). __dict__:把類中的屬性組成一個(gè)字典,屬性名作為key, 屬性值作為value

(5).__class__:用于查看對(duì)象是由哪個(gè)類創(chuàng)建的

2.super():

當(dāng)有多個(gè)類發(fā)生繼承關(guān)系時(shí),Python內(nèi)部會(huì)維護(hù)著一張繼承表(通過(guò)__mro__可以查看)。super()在當(dāng)前繼承表中找到自己的位置,然后執(zhí)行下一個(gè)類的__init__方法。

七、上下文管理器(ContextManager)

在很多時(shí)候,我們都會(huì)看到with open(filename, 'w') as f:pass,這種操作文件的方式。這種操作的好處就是我們不需要手動(dòng)調(diào)用f.close()來(lái)關(guān)閉我們打開的文件。這是為什么呢?

任何一個(gè)上下文管理器對(duì)象都可以使用with關(guān)鍵字來(lái)操作。什么是上下文管理器呢?

只要實(shí)現(xiàn)了__enter__()和__exit__()方法的類就是上下文管理器!

__enter__():返回資源對(duì)象。

__exit__():在操作完成之后,進(jìn)行清除工作。如關(guān)閉文件

連接數(shù)據(jù)庫(kù)的上下文管理器:

第一種方式:

第二種方式:

總結(jié)

以上是生活随笔為你收集整理的python知识点总结全_【转】Python高级知识点总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。