python 有哪些優雅的代碼實現 ?以前在一篇部落格中學習過。記得這是有一個統一的名稱的。不過忘了
舉個常用的例子 [i for i in list if not…… ]。
這種代碼寫的很爽,但感覺自己掌握的不全。所以特來問一下
回複內容:
Intermediate Python
看這個文檔,爽溜溜的各種技巧
generators,map,reduce,lambda ,decorators, *args等等
各種優雅~所謂優雅,其實是由於這門語言的文法糖很甜,給(之前沒有接觸過的)人造成了一種“臥槽,好厲害”的錯覺,其實很多情況下其他語言也可以,只不過可能實現起來不這麼“優雅”而已。
這裡簡單介紹一點Python“優雅”的代碼和這顆糖的名字,至於這顆糖的更深層次的東西,這裡一律略過。
首先是
lambda運算式。lambda運算式是一種非常簡潔的定義函數的形式,不過一般不推薦寫lambda運算式。比如求兩個數的和,通過定義函數的寫法為:
def add(x, y): return x + y
1. map、reduce、filter三兄弟和lambda匿名函數,拯救緩慢的for迴圈(然而其實也並沒有特別快),偽裝函數式語言(然而實際上還是OO),並且[嗶]
2. yield大法好,generator大法好。
3. try else,for else,while else……
4. monkey patch大法好,模組封裝好了不想改模組本身但是又必須做修改?靠這個了……
5. 裝飾器大法好……
6. 列表解析大法好……
似乎能『優雅』的主要都在這幾個點上,有空了我會補一點例子。然而任何一點用太多其實都會惹人厭,所以說PEP告訴你一行不要太長是有道理的……樓上都說了一些很好用、很實用的。補充一個 functools 包,裡面的函數你用一次,就會徹底愛上。從問題來看,題主python都還不熟,更別提優雅的代碼實現了,還有樓上的回答,基本都是那幾個函數式編程的工具,推薦《python cookbook》,樓上說的和題主問的都涵蓋了,對著書敲一遍吧。
不同人群寫
Python的階乘函數
1 . 普通青年
def f(n): if n == 1: return 1 return n * f(n - 1)
a, b = b, a
讀讀 Python documentation 裡的 The Python Language Reference 你就明白了,這都是很一般的寫法。