Python語法糖


語法糖(Syntactic sugar)是英國計算機科學家彼得·約翰·蘭達發明的一個術語,指計算機語言中添加的某種語法,這些語法沒有給程序增加新功能,但是對於程序員更“甜蜜”。語法糖提供了更易讀的編碼方式,可以提高開發效率。

Python語法糖總結:

1、匿名函數(lambda表達式)

用在不能定義函數的地方,作為一個表達式,實現了函數的功能。

2、過濾(filter)、映射(map)、化簡(reduce)、排序(sorted)

過濾(filter):選擇列表中的某些元素,並過濾掉其他元素。接受一個函數和一個序列,函數作用於序列的每個元素,根據返回值是True還是False決定是否保留。filter函數返回一個迭代器(Iterator),可以用list函數獲取所有結果並返回列表。

映射(map):將一個函數對應到一個序列的每個元素上。接收一個函數和一個可迭代對象,返回一個迭代器。

化簡(reduce):將一個序列的元素值合起來到一個單獨的變量。接收一個函數和一個序列,把函數作用在序列上。函數必須有兩個參數,reduce按順序處理,前面處理結果和下一個元素繼續處理。reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

排序(sorted):將一個序列按順序排列。接收三個參數,第一個可迭代對象,第二個key函數自定義排序規則(比如key=abs按絕對值,key=str.lower忽略大小寫只按字母順序),第三個reverse=True反向排序。返回一個列表。

 

3、裝飾器(Decorator)

不修改函數定義,而給函數增加功能(常用的用途有輸出日志、記錄開始和結束時間)

AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程

簡單裝飾器

一個參數的裝飾器

多個參數的裝飾器

4、偏函數(partial函數)

函數需要兩個參數,只有一個參數已知,可以定義一個partial函數傳入已知參數,待未知參數確定可以直接用調用單參數函數。

5、with的用法

6、迭代器與生成器??

兩個值求最大最小值:a3 = [a1, a2][a1 < a2](相當於:a3 = [a1, a2][int(a1 < a2]),利用列表下標和True=1、False=0的對應關系來取值)

 

列表生成式和生成器
列表生成式:[s1 + s2 for s1 in 'abc' for s2 in 'xyz'  if s1 != 'a']
得到:['bx', 'by', 'bz', 'cx', 'cy', 'cz']
生成器,可以直接把列表生成式改造成生成器(中括號改為小括號),或生成器函數用yield返回值,以下為斐波那契數列生成器:
def fib(max):
    n, a, b = 0, 0, 1
    while n<max:
        yield b
        a, b = b, a+b
        n = n+1
    return 'done'
for n in fib(6):
    print(n)

 閉包(Closure,別的語言也有):注意返回函數不要引用任何循環變量,或者后續會發生變化的變量。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM