新聞中心
python極簡教程06:生成式和裝飾器
測試奇譚,BUG不見。
我們擁有十余年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、手機網(wǎng)站制作、H5建站、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。
這一場,主講python的 生成式和裝飾器。
目的:掌握四種生成式(列表、生成器、集合、字典),裝飾器的原理和使用。
能夠用一行代碼,快速高效的生成數(shù)據(jù)。(這就不需要再通俗的講解了吧)
舉個例子:提取1-100之間的奇數(shù)
使用(),而不是 []
舉個例子:列表元素去重
舉個例子:字典kv反轉(zhuǎn)
顧名思義:增強函數(shù)或類的功能的一個函數(shù)。
裝飾器的作用:增強函數(shù)的功能,確切的說,可以裝飾函數(shù),也可以裝飾類。
初學(xué)的你,還是太難理解?
你開視頻聊天,覺得自己的顏值不在線,于是乎,你使用美顏,增強裝飾自己的顏值。
對于美顏這個功能來說,你可以用,我可以用,所有人都可以用,以此來增強裝飾自己的顏值。
方法一:不用語法糖@符號
方法二:采用語法糖@符號
再舉個例子:計算函數(shù)時間
python列表生成式在哪里?
把要生成的元素放在前面,后面跟上for循環(huán)
如:【x+10 for x in range(15)】
生成器可以理解為用于生成列表、元組等可迭代對象的機器。既然是機器,沒啟動之前,在Python中只是一個符號。也就是說,生成器還不是實際意義上的列表,因此比列表更加節(jié)省內(nèi)存空間,必要時,生成器可以按照需要去生成列表。
解釋
生成器也是一種迭代器,但是你只能對其迭代一次。這是因為它們并沒有把所有的值存在內(nèi)存中,而是在運行時生成值。你通過遍歷來使用它們,要么用一個“for”循環(huán),要么將它們傳遞給任意可以進行迭代的函數(shù)和結(jié)構(gòu)。大多數(shù)時候生成器是以函數(shù)來實現(xiàn)的。然而,它們并不返回一個值,而是yield(暫且譯作“生出”)一個值。
Python中生成器表達式的理解?
9.11. 生成器表達式
有時簡單的生成器可以用簡潔的方式調(diào)用,就像不帶中括號的鏈表推導(dǎo)式。這些表達式是為函數(shù)調(diào)用生成器而設(shè)計的。生成器表達式比完整的生成器定義更簡潔,但是沒有那么多變,而且通常比等價的鏈表推導(dǎo)式更容易記。
例如:
sum(i*i for i in range(10)) # sum of squares
285
xvec = [10, 20, 30]
yvec = [7, 5, 3]
sum(x*y for x,y in zip(xvec, yvec)) # dot product
260
from math import pi, sin
sine_table = {x: sin(x*pi/180) for x in range(0, 91)}
unique_words = set(word for line in page for word in line.split())
valedictorian = max((student.gpa, student.name) for student in graduates)
data = 'golf'
list(data[i] for i in range(len(data)-1, -1, -1))
['f', 'l', 'o', 'g']
Footnotes
[1] 有一個例外。模塊對象有一個隱秘的只讀對象,名為 __dict__ ,它返回用于實現(xiàn)模塊命名空間的字典,命名 __dict__ 是一個屬性而非全局命名。顯然,使用它違反了命名空間實現(xiàn)的抽象原則,應(yīng)該被嚴格限制于調(diào)試中。
網(wǎng)頁題目:關(guān)于python函數(shù)生成式的信息
本文路徑:http://fisionsoft.com.cn/article/dojjijc.html