13.生成器、迭代器、 模塊、包和包管理

         生成器        

 

1、建立生成器的兩個方法

#方法 一:列表推導式的 [ ] 改爲  ( )
tu = (x for x in range(11))
print(tu)
print(next(tu))
print(next(tu))
print(next(tu))

#方法 二:在函數裏面加上yield
def func1(num):
    i = 0
    while i <= num:
        yield i
        i += 1
a = func1(10)
for i in a:
    print(i)

2、yield運行規則

·python

def func():
    print("---------------")
    yield 11
    print("=======11========")
    yield 22
    print("=======22========")
    yield 33
    print("=======33========")
result = func()
print(next(result))
print(next(result))
print(next(result))

注意: 程序員

yield 表達式只能在函數中使用,在函數體中使用 yield 表達式可使函數 成爲一個生成器 數據結構

yield 能夠返回表達式結果,而且暫定函數執行,直到next激活下一個yield函數

 

Python使用生成器對延遲操做提供了支持。所謂延遲操做,是指在須要的時候才 產生結果,而不是當即產生結果,從而節省大量的空間,這也是生成器的主要好處spa

 

        迭代器        

 迭代就是一個依次從數據結構中 拿出東西的過程3d

迭代能夠用更加低級的while來實現,可是須要本身控制下標 並獲取對應的元素code

1、區分 可迭代對象 和 迭代器

from collections import Iterable ,Iterator 對象

可迭代對象: Iterable 可迭代對象能用for循環進行遍歷 blog

可使用 isinstance() 判斷一個對象是不是 Iterable 對象:開發

迭代器:Iterator

迭代器不只能夠經過for進一行遍歷,能夠經過next取值

可使用 isinstance() 判斷個對象是不是 Iterator :

from collections import Iterable ,Iterator
str1  = "sdafgbgfn"
for i in "sdsafvfadfv":       #for循環
    print(i)
str2 = iter(str1)        #把可迭代對象轉換爲迭代器
# print(isinstance(str2,Iterator))    #判斷是否爲迭代器
print(next(str2))

2、迭代

#迭代循環原理
li = [1,2,3,4,5]

index = 0
var = None
while index<len(li):
    var = li[index]
    print(var)
    index += 1

 3、for 實現原理

 

4、從可迭代對象生成一個迭代器

 

5、迭代器

生成器有next方法沒有iter方法

         模塊          

 

模塊就是一個python文件

在開發中,咱們能夠分配不一樣的程序員,不一樣部 分的工做,最後經過導入模塊,將全部人的成果結合在一塊兒

import --> 執行導入的文件 --> 在當前這個文件裏生成一個模塊對象

1、模塊

2、導入語法 與 導入路徑

 

3、if __name__ == '__main__':

    包和包管理    

 包,就是包含了不少模塊的文件夾

構造一個包:首先須要把py文件放入包中,而且加一個__init__.py文件

1、包

 

2、包的管理

 

相關文章
相關標籤/搜索