1. 程式人生 > >LF 模塊二 考試復習以及總結

LF 模塊二 考試復習以及總結

追加 generator trunc line 閉包 裝飾 文件 write 減少

1.包的導入

2.文件open讀取路徑問題 如何方位其他包下的文件
需要復習的 re 導入 log 非固定參數


作用域:
裝飾器: 前置知識閉包
序列化:
正則:
os,sys,time,叠代器,生成器,內置函數,遞歸,文件操作。


文件操作
utf - 8 decode -unicode
unicode encode gbk,utf-8

wb 寫二進制,寫圖片,寫內存
圖片視頻是二進制


讀所有
read()

讀一行
for line in file:
print(line)

追加模式 a

讀寫 r+ 先讀後寫,在後面追加

寫讀 w+ 創建,在寫,可以讀新寫的

文件操作方法。
fineno 返回文件句柄在內核中的索引值

flush把文件從內存buffer中強制刷新到硬盤

文件在close時候,才會刷入硬盤,否則在內存中,如果直
接寫入硬盤會很慢,buffer滿了才會刷入
主動刷入硬盤需要用flush

readable 判斷文件是否可讀(用於判斷是不是特殊文件,linux,w
文件也不能讀)

readline 只讀一行,遇到\r or \n 為止

f.tell 返回當前光標為止

f.seek(50) 光標位置
這個50究竟是什麽: 只是移動了光標位置,並沒有讀取內容
read(1)<<讀了一個字符
tell seek 找的都是字節 utf-8漢字3個字節 字母,數字
,符號,1個字節

gbk 漢字2個字節 字母,數字,
符號1個字節
writeable 文件是否可寫

f.truncate() 按指定長度截斷文件 從當前位置開始截斷
路飛學院 seek(3) --- f.truncate() --- 路
路飛學院 seek(3) ---- f.truncate(6) --路飛 函
數內傳入值相當於從開頭獲得到傳入值位置

readlines():
fileObject.readlines( );
返回列表,包含所有的行。

修改文件
無法直接插入,因為硬盤的存儲原理導致
只有一個辦法,新建一個文件,寫入,替換舊文件,改名

不能讀取所有,不知道文件有多大,會撐爆內存
所以可以每讀一行,檢測是否有修改內容,修改後,寫入新文件,再
替換

要麽 占硬盤(寫新文件)
要麽 占內存(全部讀取),如果文件變小了,可以truncate把後面
的去掉

line = line.replace(old_str,new_str)後面替換前面


函數:
定義 函數是指將一組語句的集合通過一個名字封裝起來,要想執行
這個函數,只需要調用函數名即可

參數
形參:只有在被調用時,才會分配內存單元,調用結束時釋放內存。
形參只在函數內部有效,調用結束後不再使用

實參 可以是常量,變量,表達式,函數,無論是何種類型,在進行
函數調用時,必須有確定值,才能傳給形參。


默認參數
def stu (name,age,country,course)>> def stu
(name,age,course,country="cn")

傳入參數時,country可以不用寫
為什麽默認參數要放在位置參數(非默認參數)後面?
傳值需要與形參一一對應


關鍵參數
在傳參時候會用 指定一個參數名,給這個參數指定值 stu
(‘alex‘,course=python,age=19)
關鍵參數要放在位置參數之後


作用域:
python中函數就是一個作用域 局部變量放置在其作用域中
代碼定義完成以後,作用域已經生成,作用域鏈向上查找
00000000000000000000000000000000000000000000000000
map()函數
map()是 Python 內置的高階函數,它接收一個函數 f 和一個 list
,並通過把函數 f 依次作用在 list 的每個元素上,得到一個新的
list 並返回。

高階函數
變量可以指向函數,函數的參數能接受變量,那麽 一個函數就可以
接受另一個函數作為參數,即高階函
def a():
return
def b(x):
pass
b(a)

1.接受另一個函數當參數的函數 就是高階函數
2.返回結果裏包含了函數,就是高階函數


遞歸:


好理解 自己調用自己
幾個特點
1.必須有結束條件
2.深層遞歸,規模要比上一次減少
3.效率低,過多會棧溢出

尾遞歸
例如:
def a(x):
print(x)
return a(x+1) <調用下一層時候退出了,用不到第一層的調用
,因為已經返回,下一層跟本層沒有聯系,就可以優化這個。
python語言中,沒有尾遞歸優化。


內置方法
abs()取絕對值
dict()轉字典
help()幫助
min()max() 取最小,最大
all() 判斷列表所有的值都是true,返回true 1 2 3 -1 -2 真,0

bool() 判斷是True還是false
但是 all([])空列表 返回的是True bool([])是false
any() 如果列表中任意一個是True,返回True
dir() 打印當前函數存在的所有變量


生成器
L = (x*x for x in range(10))

def fib(max):
n,a,b = 0,0,1
while n < max
yield b
a,b = b,a+b
n += 1
return ‘done‘
f = fib(6)

可叠代 Iterable
集合類 列表,元組,字典,集合,字符串
生成器generator ,包括生成器和帶yield的函數
判斷
isinstance([],Iterable) > True
可for循環

叠代器:
可以被next()函數調用並不斷返回下一個值得對象成為叠代器
Iterator
isinstance([],Iterator) > False
生成器都是叠代器
把可叠代對象變成叠代器:iter()
isinstance(iter([]),Iterator) >True


補充
參數位置順序:位置參數-關鍵參數-默認參數-非固定參數
裝飾器必備條件:1.高階函數。2.閉包

LF 模塊二 考試復習以及總結