1.數組是一個可迭代對象,相似的還有鏈表,字符串,文件;數組能夠是[1,2,3],也能夠是[x*x for x in range(3)]; 他的缺點是全部數據都在內存中,若是數據量大的話,很是消耗內存;python
2.生成器是能夠迭代的,可是隻能夠讀取它一次,由於用的時候才生成, 好比 (x*x for x in range(3)), 這裏用到的是(), 而不是[];數組
3.生成器可以迭代,是由於有一個next()方法,不斷調用next(),直至出現異常;bash
4.函數帶有yield時,便變成了一個生成器;函數
5.yield具備return做用,迭代一次就會返回yield右邊的值,並記錄這次迭代的位置,下一次迭代時,會今後次的yield的位置往下執行;ui
6.yield不止用於for循環, 也能夠用於函數的參數,只要這個函數容許迭代參數, 好比array.extend();spa
7.send(msg)與next(),均可以用於生成器,send(msg)會傳參數給生成器,返回生成器的第幾回yield的返回值;生成器第一次調用時,要先調用next()或者send(None),由於第一次的時候,沒有上一次yield的位置;code
8.yield from iterable
本質上等於for item in iterable: yield item
的縮寫版;對象
#encoding:UTF-8
def yield_test(n):
for i in range(n):
yield call(i)
print("i=",i)
#作一些其它的事情
print("do something.")
print("end.")
def call(i):
return i*2
#使用for循環
for i in yield_test(5):
print(i,",")
複製代碼
>>>
0 ,
i= 0
2 ,
i= 1
4 ,
i= 2
6 ,
i= 3
8 ,
i= 4
do something.
end.
>>> 複製代碼
mkdir test_venv #建立虛擬環境所在的目錄
cd test_venv #進入虛擬環境目錄裏
python -m venv test #建立test的虛擬環境 -- 執行後會生成一個test的文件夾,裏面有初始化文件
cd test
source bin/activate #激活虛擬環境複製代碼
持續更新...內存