1.生成式
列表生成式就是一個用來生成列表的特定語法形式的表達式。是Python提供的一種生成列表的簡潔形式, 可快速生成一個新的list。
普通的語法格式:[exp for iter_var in iterable]
帶過濾功能語法格式: [exp for iter_var in iterable if_exp]
循環(huán)嵌套語法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B]
2.生成器
1.什么叫生成器?
在Python中,一邊循環(huán)一邊計算的機制,稱為生成器:Generator。
2.什么時候需要使用生成器?
性能限制需要用到,比如讀取一個10G的文件,如果一次性將10G的文件加載到內(nèi)存處理的話(read方法),內(nèi)存肯定會溢出;但使用生成器把讀寫交叉處理進行,比如使用(readline和readlines)就可以再循環(huán)讀取的同時不斷處理,這樣就可以節(jié)省大量的內(nèi)存空間。
生成器特點
- 解耦. 爬蟲與數(shù)據(jù)存儲解耦;
- 減少內(nèi)存占用. 隨時生產(chǎn), 即時消費, 不用堆積在內(nèi)存當(dāng)中;
- 可不終止調(diào)用. 寫上循環(huán), 即可循環(huán)接收數(shù)據(jù), 對在循環(huán)之前定義的變量, 可重復(fù)使用;
- 生成器的循環(huán), 在 yield處中斷, 沒那么占cpu.
python中return關(guān)鍵字和yield關(guān)鍵字的區(qū)別?
- return:在程序函數(shù)中返回某個值,返回之后函數(shù)不在繼續(xù)執(zhí)行,徹底結(jié)束。
- yield: 帶有yield的函數(shù)是一個迭代器,函數(shù)返回某個值時,會停留在某個位置,返回函數(shù)值后,會在前面停留的位置繼續(xù)執(zhí)行,直到程序結(jié)束
3.閉包
什么是閉包?如何實現(xiàn)閉包?
閉包就是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù)。
創(chuàng)建閉包最常見方式,就是在一個函數(shù)內(nèi)部創(chuàng)建另一個函數(shù)。
常見形式: 內(nèi)部函數(shù)使用了外部函數(shù)的臨時變量,且外部函數(shù)的返回值是內(nèi)部函數(shù)的引用。
閉包的一個常用場景就是裝飾器。
4.裝飾器
什么是裝飾器?
裝飾器指的是工具,而程序中的函數(shù)就是具備某一功能的工具,所以裝飾器指的是為被裝飾器對象添加額外功能的工具/函數(shù)。(可理解為照片與相框的關(guān)系)
裝飾器本質(zhì)上是一個函數(shù),該函數(shù)用來處理其他函數(shù),它可以讓其他函數(shù)在不需要修改代碼的前提下增加額外的功能,裝飾器的返回值也是一個函數(shù)對象。
裝飾器經(jīng)常用于有切面需求的場景,比如:插入日志、性能測試、事務(wù)處理、緩存、權(quán)限校驗等應(yīng)用場景。
(1)萬能裝飾器的實現(xiàn)
(2)含參數(shù)的裝飾器
(3)多裝飾器
5.內(nèi)置高階函數(shù)
函數(shù)式編程的一個特點就是,允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù),還允許返
回一個函數(shù)!Python對函數(shù)式編程提供部分支持。
把函數(shù)作為參數(shù)傳入,這樣的函數(shù)稱為高階函數(shù),函數(shù)式編程就是指這種高度抽象的編程范式。文章來源:http://www.zghlxwxcb.cn/news/detail-475518.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-475518.html
到了這里,關(guān)于python-高級特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!