15 迭代器 生成器 模組和包

2022-06-02 02:12:09 字數 2975 閱讀 1080

第16節 迭代器、生成器

作業解答

一, 推導表示式

1,列表推導

2,集合和字典推導

二,生成器

1,建立生成器的兩種方法

2, yield執行規則

三,迭代器

1,區分可迭代物件和迭代器

2,迭代

3,for實現原理

4,從可迭代物件生成乙個迭代器

5,自定義迭代器

四,模組

1,模組的匯入

2,匯入語法 與 匯入路徑

導包匯入全部包 *

importos​

ifnot os.path.exists('

my_tesr.txt

'): #

判斷檔案是否存在

file = open('

my_test.txt

', '

w+', encoding='

utf-8')

try:

my_dict =

file.write(my_dict[

'name'])

except

exception as e:

print

(e)

finally

: file.close()

print('

檔案正常關閉')

#檔案存在則不會執行try

1,列表推導

2,集合和字典推導

1,建立生成器的兩種方法

2, yield執行規則

python使用生成器對延遲操作提供了支援。所謂延遲操作,是指在需要的時候才產生結果,而不是立即產生結果,從而節省大量的空間,這也是生成器的主要好處

1,區分可迭代物件和迭代器

2,迭代

for 迭代變數 in 可迭代物件,每一次迴圈都會自動讓「迭代變數」指向「下乙個元素」 。

#

例1li = [1,2,3,4,5]

for i in

li:

print

(i)#

例2li = [1,2,3,4,5]

index =0

var =none

while index var =li[index]

print

(var)

index += 1兩次列印結果都一樣:12

345

3,for實現原理

li = [1,2,3,4,5]

li2 =iter(li)

try:

while

true:

var =next(li2)

print

(var)

​except

stopiteration:

pass

列印結果:12

345

4,從可迭代物件生成乙個迭代器

迭代器 = iter(可迭代物件)

下個值 = next(迭代器)

5,自定義迭代器

迭代器物件本身需要支援以下兩種方法,它們一起構成迭代器協議:

iterator.__iter__()​

iterator.

__next__()

取值:

next(iterator)

​iterator.

__next__()

注意:如果迭代器值取完之後,會返回stopiteration 錯誤

1,模組的匯入

2,匯入語法 與 匯入路徑

3,if __name__== '__main__'

1,包概念:

把很多模組放到乙個資料夾裡面,就可以形成乙個包

import

test.zcm

test.zcm.func1()

​import test.zcm as t #

test是資料夾,zcm是py檔案

t.func1()

​from test import

zcmzcm.func1()

​from test import

zcm as t

t.func1()

__all__ = ['

zcm'] #

這句**必須要寫到init裡面

from test import *zcm.func1()

匯入包方法:

#

例子1#

在包裡面的 __init__檔案裡定義函式方法

definitfunc():

print('

這是initfunc

')

#

例子1import pp #

pp是包資料夾的名字

pp.initfunc()

列印結果:

這是initfunc

#

例子2#

在包裡面的 __init__檔案裡定義函式方法

__all__ = ['

initfunc']

definitfunc():

print('

這是initfunc

')

#

例子2form pp import *initfunc()

列印結果:

這是initfunc

2,包管理:

當把很多模組放在檔案中時,為了方便引用包中的模組,引入了包管理

3,__init__.py

在包管理中,加入此模組,則包名可以直接通過屬性訪問的方式,訪問此模組內的物件,檔案內容可以為空

4,相對路徑匯入

在包管理中,可以通過. (乙個點) 和 .. (兩個點)分別來匯入同層和上一層的模組

Python迭代器生成器,模組和包

1.迭代器和生成器 2.模組和包 1.迭代器 迭代器物件要求支援迭代器協議的物件,在python中,支援迭代器協議就是實現物件的 iter 和 next 方法。其中 iter 方法返回迭代器物件本身 next 方法返回容器的下乙個元素,在結尾時引發stopiteration異常。2.生成器gener...

閉包,生成器,迭代器

函式內部再定義乙個函式並且這個函式用到了外邊的函式的變數,那麼將這個函式以及用到的一些變數稱為閉包。def line conf a,b def line x return a x b return line line1 line conf 1,1 line2 line conf 4,5 print ...

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...