#方法 一:列表推導式的 [ ] 改爲 ( ) 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)
·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
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))
#迭代循環原理 li = [1,2,3,4,5] index = 0 var = None while index<len(li): var = li[index] print(var) index += 1
生成器有next方法沒有iter方法
模塊就是一個python文件
在開發中,咱們能夠分配不一樣的程序員,不一樣部 分的工做,最後經過導入模塊,將全部人的成果結合在一塊兒
import --> 執行導入的文件 --> 在當前這個文件裏生成一個模塊對象
包,就是包含了不少模塊的文件夾
構造一個包:首先須要把py文件放入包中,而且加一個__init__.py文件