Python基礎 閉包和檔案

2021-10-02 13:25:05 字數 2256 閱讀 2262

期末筆記後期整理,如有問題,請多多指教。

1、三個條件:

①存在於巢狀關係的函式中;

②巢狀的內部函式引用了外部函式的變數;

③巢狀的外部函式會將內部函式名作為返回值返回。

def outer(start=0):

count=[start]

def inner():

count[0]+=1

return count[0]

return inner

quote=outer(5)

print(quote())

2、常見的內建函式

①map函式

map(function,iterable,...)#當呼叫map函式時,iterable中的每個元素都呼叫function,返回結果儲存到迭代器物件中。

func=lambda x:x+2

result=map(func,[1,2,3,4,5])

print(list(result))

若呼叫map函式時傳入function引數為none,則相當於將序列中對應位置的元素合併成元組。

②filter函式(對指定序列執行過濾操作)

filter(function,iterable)#迭代器中的每個引數元素分別呼叫function,最後返回迭代器包含的呼叫結果為true的元素。

function返回值為布林值,可為none。

func=lambda x:x%2

result=filter(func,[1,2,3,4,5])

print(list(result))

③reduce函式(對迭代器的元素進行累積)

reduce(function,iterable[,initializer])

function帶兩個引數,不能為none,initializer為初始值

from functools import reduce

func=lambda x,y:x+y

result=reduce(func,[1,2,3,4,5])

print(result)

1、檔案的開啟:open(檔名[,訪問模式])

r讀(預設)

rbr+

讀寫rb+w寫

wbw+

讀寫wb+a追加

aba+

讀寫ab+

file=open('test.txt',w+)
2、檔案的關閉

file.close()
3、寫檔案

file.write('hello')#若檔案存在,清空所有資料,重新寫入
4、讀檔案

file.read([size])#返回字串,可指定長度

file.readlines()#返回列表,每個元素為檔案的每一行

file.readline()#一行一行地讀,返回字串

5、檔案的定位讀寫

①tell方法(獲取檔案當前的讀寫位置)

words=file.read(5)

position=file.tell()

print(position)

②seek方法(定位到檔案的指定讀寫位置)

seek(offset[,whence])#偏移量,方向

seek_set或0:起始(預設)

seek_cur或1:當前

seek_end或2:末尾

file.seek(5)#訪問模式rb+指標位置可動,r不可
6、檔案的重新命名和刪除:os模組

os.rename(src,dst)

os.remove(path)

7、資料夾的相關操作

os.mkdir("aa")#建立

os.getcwd()#獲取當前目錄

os.chdir("../")#改變預設目錄

os.listdir("./")#獲取目錄列表

os.rmdir("aa")#刪除

8、with語句

#當對檔案的操作結束後,with語句會關閉檔案

with open("test.txt") as file:

data=file.read()

python基礎 閉包

摘自廖雪峰老師的部落格 返回閉包時,返回函式中不要引用任何後續可能變化的變數 如果一定要引用,就在原返回函式中再定義乙個函式,用該函式中的引數繫結可能變化的變數的當前值。def count fs for i in range 1,4 def f return i i return fs f1,f2,...

python 閉包 python 閉包

閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...

Python基礎10 閉包

內層函式引用了外層函式的變數 引數也算變數 然後返回內層函式的情況,稱為閉包 closure def calc sum lst deflazy sum return sum lst return lazy sumdef lazy sum args defsum ax 0 for n in args ...