怎么用服務(wù)器ip做網(wǎng)站谷歌官方網(wǎng)站首頁(yè)
文章目錄
- 1.類有兩個(gè)方法,一個(gè)是 new,一個(gè)是 init,有什么區(qū)別,哪個(gè)會(huì)先執(zhí)行呢?
- 2.map 函數(shù)返回的對(duì)象
- 3.正則表達(dá)式中 compile 是否多此一舉?
- 4.[[1,2],[3,4],[5,6]]一行代碼展開(kāi)該列表,得出[1,2,3,4,5,6]
- 5.一行代碼將字符串 "->" 插入到 "abcdefg"中每個(gè)字符的中間
- 6.zip 函數(shù)
- 關(guān)于Python技術(shù)儲(chǔ)備
- 一、Python所有方向的學(xué)習(xí)路線
- 二、Python基礎(chǔ)學(xué)習(xí)視頻
- 三、精品Python學(xué)習(xí)書(shū)籍
- 四、Python工具包+項(xiàng)目源碼合集
- ①Python工具包
- ②Python實(shí)戰(zhàn)案例
- ③Python小游戲源碼
- 五、面試資料
- 六、Python兼職渠道
1.類有兩個(gè)方法,一個(gè)是 new,一個(gè)是 init,有什么區(qū)別,哪個(gè)會(huì)先執(zhí)行呢?
class test(object):??? def __init__(self):??? print("test -> __init__")??? def __new__(cls):??? print("test ->__new__")??? return super().__new__(cls)?????a = test()
運(yùn)行結(jié)果如下:
test ->__ new__???test -> __ init__
再來(lái)看另一個(gè)例子:
class test2(object):??? def __init__(self):??? print("test2 -> __init__")??? ??? def __new__(cls):??? print("test2 ->__new__")??? return object()??? ???b = test2()
運(yùn)行結(jié)果如下:
test2 ->__ new__
這里給出官方的解釋:init 作用是類實(shí)例進(jìn)行初始化,第一個(gè)參數(shù)為 self,代表對(duì)象本身,可以沒(méi)有返回值。new 則是返回一個(gè)新的類的實(shí)例,第一個(gè)參數(shù)是 cls 代表該類本身,必須有返回值。很明顯,類先實(shí)例化才能產(chǎn)能對(duì)象,顯然是 new 先執(zhí)行,然后再 init,實(shí)際上,只要 new 返回的是類本身的實(shí)例,它會(huì)自動(dòng)調(diào)用 init 進(jìn)行初始化。但是有例外,如果 new 返回的是其他類的實(shí)例,則它不會(huì)調(diào)用當(dāng)前類的 init。
下面我們分別輸出下對(duì)象 a 和對(duì)象 b 的類型:
print( type(a))???#<class '__main__.test'>? ??print( type(b))???#<class 'object'>
可以看出,a 是 test 類的一個(gè)對(duì)象,而 b 就是 object 的對(duì)象。
2.map 函數(shù)返回的對(duì)象
map()函數(shù)第一個(gè)參數(shù)是 fun,第二個(gè)參數(shù)是一般是 list,第三個(gè)參數(shù)可以寫(xiě) list,也可以不寫(xiě),作用就是對(duì)列表中 list 的每個(gè)元素順序調(diào)用函數(shù) fun 。
>>> b=map(lambda x:x*x,[1,2,3])???>>> [i for i in b]???[1, 4, 9]???>>> [i for i in b]???[]???>>>
有沒(méi)有發(fā)現(xiàn),第二次輸出 b 中的元素時(shí),發(fā)現(xiàn)變成空了。原因是 map() 函數(shù)返回的是一個(gè)迭代器,并用對(duì)返回結(jié)果使用了 yield,這樣做的目的在于節(jié)省內(nèi)存。
舉個(gè)例子:
#encoding:UTF-8 ???def yield_test(n): ??? for i in range(n): ??? yield call(i) ??? #做一些其它的事情 ??? ?def call(i): ??? return i*2 ??? ??#使用for循環(huán) ???x = yield_test(5)???print([i for i in x])???print([i for i in x])
執(zhí)行結(jié)果為:
[0, 2, 4, 6, 8]??? []
這里如果不用 yield,那么在列表中的元素非常大時(shí),將會(huì)全部裝入內(nèi)存,這是非常浪費(fèi)內(nèi)存的,同時(shí)也會(huì)降低效率。
3.正則表達(dá)式中 compile 是否多此一舉?
比如現(xiàn)在有個(gè)需求,對(duì)于文本
中國(guó),用正則匹配出標(biāo)簽里面的“中國(guó)”,其中 class 的類名是不確定的。
有兩種方法,代碼如下:
>>> import re??>>> text = '<div class="nam">中國(guó)</div>'???>>> #方法一???...???>>> re.findall('<div class=".*">(.*)</div>',text)???['中國(guó)']???>>> #方法二???...???>>> regex='<div class=".*">(.*)</div>'???>>> pattern = re.compile(regex)???>>> re.findall(pattern,text)???['中國(guó)']???>>>
這里為什么要用 compile 多寫(xiě)兩行代碼呢? 原因是 compile 將正則表達(dá)式編譯成一個(gè)對(duì)象,加快速度,并重復(fù)使用。
4.[[1,2],[3,4],[5,6]]一行代碼展開(kāi)該列表,得出[1,2,3,4,5,6]
>>> [j for i in [[1,2],[3,4],[5,6]] for j in i]???[1, 2, 3, 4, 5, 6]???>>>
5.一行代碼將字符串 “->” 插入到 "abcdefg"中每個(gè)字符的中間
>>> "->".join("abcdef")???'a->b->c->d->e->f'???>>>
這里也建議多使用 os.path.join() 來(lái)拼接操作系統(tǒng)的文件路徑。
6.zip 函數(shù)
zip() 函數(shù)在運(yùn)算時(shí),會(huì)以一個(gè)或多個(gè)序列(可迭代對(duì)象)做為參數(shù),返回一個(gè)元組的列表。同時(shí)將這些序列中并排的元素配對(duì)。zip() 參數(shù)可以接受任何類型的序列,同時(shí)也可以有兩個(gè)以上的參數(shù);當(dāng)傳入?yún)?shù)的長(zhǎng)度不同時(shí),zip 能自動(dòng)以最短序列長(zhǎng)度為準(zhǔn)進(jìn)行截取,獲得元組。
>>> a=[1,2]???>>> b=(3,4)???>>> zip(a,b)???<zip object at 0x000001A20201AA08>???>>> for i in zip(a,b):???... print(i)???...???(1, 3
關(guān)于Python技術(shù)儲(chǔ)備
學(xué)好 Python 不論是就業(yè)還是做副業(yè)賺錢(qián)都不錯(cuò),但要學(xué)會(huì) Python 還是要有一個(gè)學(xué)習(xí)規(guī)劃。最后大家分享一份全套的 Python 學(xué)習(xí)資料,給那些想學(xué)習(xí) Python 的小伙伴們一點(diǎn)幫助!
👉CSDN大禮包:《Python入門(mén)資料&實(shí)戰(zhàn)源碼&安裝工具】免費(fèi)領(lǐng)取(安全鏈接,放心點(diǎn)擊)
一、Python所有方向的學(xué)習(xí)路線
Python所有方向的技術(shù)點(diǎn)做的整理,形成各個(gè)領(lǐng)域的知識(shí)點(diǎn)匯總,它的用處就在于,你可以按照上面的知識(shí)點(diǎn)去找對(duì)應(yīng)的學(xué)習(xí)資源,保證自己學(xué)得較為全面。
二、Python基礎(chǔ)學(xué)習(xí)視頻
② 路線對(duì)應(yīng)學(xué)習(xí)視頻
還有很多適合0基礎(chǔ)入門(mén)的學(xué)習(xí)視頻,有了這些視頻,輕輕松松上手Python~在這里插入圖片描述
③練習(xí)題
每節(jié)視頻課后,都有對(duì)應(yīng)的練習(xí)題哦,可以檢驗(yàn)學(xué)習(xí)成果哈哈!
因篇幅有限,僅展示部分資料
三、精品Python學(xué)習(xí)書(shū)籍
當(dāng)我學(xué)到一定基礎(chǔ),有自己的理解能力的時(shí)候,會(huì)去閱讀一些前輩整理的書(shū)籍或者手寫(xiě)的筆記資料,這些筆記詳細(xì)記載了他們對(duì)一些技術(shù)點(diǎn)的理解,這些理解是比較獨(dú)到,可以學(xué)到不一樣的思路。
四、Python工具包+項(xiàng)目源碼合集
①Python工具包
學(xué)習(xí)Python常用的開(kāi)發(fā)軟件都在這里了!每個(gè)都有詳細(xì)的安裝教程,保證你可以安裝成功哦!
②Python實(shí)戰(zhàn)案例
光學(xué)理論是沒(méi)用的,要學(xué)會(huì)跟著一起敲代碼,動(dòng)手實(shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時(shí)候可以搞點(diǎn)實(shí)戰(zhàn)案例來(lái)學(xué)習(xí)。100+實(shí)戰(zhàn)案例源碼等你來(lái)拿!
③Python小游戲源碼
如果覺(jué)得上面的實(shí)戰(zhàn)案例有點(diǎn)枯燥,可以試試自己用Python編寫(xiě)小游戲,讓你的學(xué)習(xí)過(guò)程中增添一點(diǎn)趣味!
五、面試資料
我們學(xué)習(xí)Python必然是為了找到高薪的工作,下面這些面試題是來(lái)自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠最新的面試資料,并且有阿里大佬給出了權(quán)威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。
六、Python兼職渠道
而且學(xué)會(huì)Python以后,還可以在各大兼職平臺(tái)接單賺錢(qián),各種兼職渠道+兼職注意事項(xiàng)+如何和客戶溝通,我都整理成文檔了。
這份完整版的Python全套學(xué)習(xí)資料已經(jīng)上傳CSDN,朋友們?nèi)绻枰梢晕⑿艗呙柘路紺SDN官方認(rèn)證二維碼免費(fèi)領(lǐng)取【保證100%免費(fèi)
】
