包和模块_月隐学python第13课
目錄
?
1.?成器
1.1 yield表達式?
2.迭代器?
2.1 迭代對象
2.2 迭代器
2.3 將迭代對象轉(zhuǎn)換為迭代器
3. 包
4.模塊
4.1 模塊搜索路徑
4.2 導(dǎo)?模塊
1.?成器
如果列表元素可以按照某種算法推算出來,那我們是否可以在循環(huán)的過程中不斷推算出后續(xù)的元素呢?這樣就不必創(chuàng)建完整的list,從?節(jié)省?量的空間。在Python中,這種?邊循環(huán)?邊計算的機制,稱為?成器(Generator)。
- 延遲計算、惰性求值
- 節(jié)省內(nèi)存,?效
- 缺點:?法隨機存取
?成器(Generator) ?成器會產(chǎn)??個對象,?不是?個列表
1.1 yield表達式
1.2?成器表達式
?成器【Generator】?成器會產(chǎn)??個可迭代對象,?不是?個列表。?成器表達式很類似列表?成式:
(表達式 for var in 可迭代對象)
2.迭代器
2.1 迭代對象
可以直接作?于for-in循環(huán)的數(shù)據(jù)類型都被稱為可迭代對象(Iterable),可以使?isinstance()判斷?個對象是否是可迭代對象,可以直接作?于for-in循環(huán)的數(shù)據(jù)類型:
數(shù)據(jù)結(jié)構(gòu): list、 set、 tuple、 dict、 string
generator【?成器】【(),函數(shù)結(jié)合yield】
2.2 迭代器
迭代器不但可以作?于for-in循環(huán),還可以使?next()函數(shù)將其中的元素獲取出來,當(dāng)獲取完最后?個元素之后,當(dāng)再次調(diào)?next?法,則會出現(xiàn)StopIteration錯誤,表示?法繼續(xù)返回?個值。可以使?isinstance()判斷?個對象是否是迭代器。迭代器的類型是Iterator
2.3 將迭代對象轉(zhuǎn)換為迭代器
迭代器?定是可迭代對象,但是,可迭代對象不?定是迭代器iter():
將可迭代對象轉(zhuǎn)化為迭代器【主要針對list、 set、 tuple、 dict、 string】
3. 包
包是為了解決模塊重名問題, python引?了以?錄?式組織模塊,稱之為包(package),?個包中可以包含模塊、包。 python的包中必須包含?個特殊?件,被命名為__ init__.py,這?件告訴解釋器這是?個包,??錄則不要求?定要有,這是?錄和包的區(qū)別;另外可以使?import導(dǎo)?包中的模塊,但?錄不?。
4.模塊
在python中,模塊是代碼組織的?種?式,把功能相近的函數(shù)放到?個?件中,?個?件(.py)就是?個模塊(module),模塊名就是?件名去掉后綴py。這樣做的好處是:
- 提?代碼的可復(fù)?、可維護性。?個模塊編寫完畢后,可以很?便的在其他項?中導(dǎo)?
- 解決了命名沖突,不同模塊中相同的命名不會沖突
常?標準庫:
4.1 模塊搜索路徑
當(dāng)導(dǎo)??個模塊時,解釋器先在當(dāng)前包中查找模塊,若找不到,然后在內(nèi)置的built-in模塊中查找,找不到則按sys.path給定的路徑找對應(yīng)的模塊?件(模塊名.py)
4.2 導(dǎo)?模塊
可以使?import語句導(dǎo)?模塊,格式:
import語句的模塊順序,推薦在?件開頭導(dǎo)?模塊,建議按照如下順序:
- python標準庫
- 第三?庫
- ?定義庫
這三類庫中間添加?個空?,模塊第?次被導(dǎo)?的時候會被執(zhí)?。如果在導(dǎo)?模塊不想執(zhí)?模塊中代碼,可以使? __ name__ 屬性進?判斷,如果該模塊是當(dāng)前模塊,不是導(dǎo)?模塊, __name __ 的值是 __main__ 。所以可以這樣檢測:
?
總結(jié)
以上是生活随笔為你收集整理的包和模块_月隐学python第13课的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis学习笔记-安装与入门
- 下一篇: 内建模块_月隐学python第14课