第七節 迭代器 生成器 裝飾器

2022-08-31 22:24:24 字數 2185 閱讀 7134

f.read(3)代表讀取3個字元,如果是b模式開啟的檔案,則是讀取三個位元組

f.flush將檔案從記憶體刷到硬碟

f.closeed檔案如果關閉則返回true

f.encoding檢視使用open開啟檔案的編碼

tell檢視游標位置

seek移動游標

truncate截斷檔案

0模式,從開頭開始移動游標位置,預設模式就是0,以r模式開啟就行

1模式,從上一次的游標位置開始移動(要以rb的方式讀 檔案)f.seek(10,1)

2模式,從檔案末尾開始倒著移動游標f.seek(-10,2),注意windows行尾有\r\n,多用在寫日誌檔案的時候

迴圈檔案的方式:

for i in f:這樣用到的時候才會讀到記憶體中

for i in f.readlines():這樣是是把檔案所有內容讀到記憶體中

for i in f:

f.seed(-3,2)

迭代器遞迴:自己呼叫自己,將處理結果不斷地傳遞給自己處理,直到得到最終結果

可迭代物件:更新換代,每次得到的結果都是基於上一次

for迴圈的機制(很重要)

while迴圈模擬for迴圈的工作機制

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

li_iter=li.__iter__()

while true:

try:

print(li_iter.__next__())

except stopiteration:

print("迭代完畢,終止列印")

break

生成器:就是可迭代物件,不需要通過_iter_()進行轉換,直接呼叫方法._next_(),或者函式nest(),生成器的值只可以取一次

生成器函式:函式族後yiel代替return,可以yield多從,retrun只可以一次

列表解析:[ 'bb%s' %i for i in range(10) ],三元表示式規則,把換成()就變成了生成器表示式

三元表示式:

"sd" if name == "sdd" else "sb"

一元 二元 三元

列表解析:

[ 'bb%s' %i for i in range(10) ] 生成列表,數值較大的時候會占用記憶體

裝飾器:本質就是函式,功能激素hi為其他函式新增附加功能

原則:1、不修改被修飾函式源**

2、不修改被修飾函式的呼叫方式

知識儲備:

1、高階函式、2、函式的巢狀  3、閉包

@timmer 在修飾的函式之前定義一下,相當於test= timmer(test) 

import 

time

def

timmer

(func):

def

warper

(*args

,**kwargs):

#處理多個引數

strat_time = time.time()

res=func(*args

,**kwargs)

#處理多個引數及返回值

stop_time = time.time()

print

(%(stop_time-strat_time))

return

res

#處理返回值

return

warper

@timmer #呼叫裝飾器

def

test

(name

,age):

time.sleep(2)

print

("我的名字是:%s,我的年齡是%s 執行完畢"

%(name

,age))

return

"這是test的返回值"

print

(test(

"sss",16

))我的名字是:sss,我的年齡是16 執行完畢

這是test的返回值

解壓序列

l=[1,2,3,4,5,6,7]

a,*_,c=1 

a=1c=7

變數值交換

f1=1

f2=2

f1,f2=f2,f1

#處理返回值

第七節 生成器與迭代器

生成器 list 1,2,3,4 it iter list 建立迭代器物件 print next it 輸出迭代器的下乙個元素 1 print next it 2 view code list 1,2,3,4 it iter list 建立迭代器物件 for x in it print x,end ...

裝飾器,生成器,迭代器

裝飾器 import time def show time func def inner x start time time.time func x end time time.time print end time start time return inner show time def add...

迭代器 生成器 裝飾器

1.迭代器 1 定義 同時滿足 iter 方法和next 方法的物件就是迭代器。3 型別 可迭代物件通過iter 轉為迭代器 生成器是一種特殊的迭代器。2.生成器 1 定義 生成器是迭代器的一種,包括含有yield關鍵字函式和生成器表示式。2 用法 所有函式呼叫的引數都是第一次呼叫時保留的,而不是新...