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