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)
importtime
def
timmer
(func):
def
warper
(*args
,**kwargs):
#處理多個引數
strat_time = time.time()
res=func(*args
,**kwargs)
#處理多個引數及返回值
stop_time = time.time()
(%(stop_time-strat_time))
return
res
#處理返回值
return
warper
@timmer #呼叫裝飾器
def
test
(name
,age):
time.sleep(2)
("我的名字是:%s,我的年齡是%s 執行完畢"
%(name
,age))
return
"這是test的返回值"
(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 用法 所有函式呼叫的引數都是第一次呼叫時保留的,而不是新...