天天看點

python文法糖

  文法糖指那些沒有給計算機語言添加新功能,而隻是對人類來說更“甜蜜”的文法。文法糖往往給程式員提供了更實用的編碼方式,有益于更好的編碼風格,更易讀。不過其并沒有給語言添加什麼新東西。

  舉個例子:在C語言裡用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),這種寫法簡潔明了,也更好懂了。

  實際上從面向過程到面向對象也是一種文法糖啊,C語言可以通過它的指針、類型轉換,結構實作面向對象的程式設計風格,但是C++更進一步的推廣了這種風格,更好用了,不過到了C#把OO的風格發揮得淋漓盡緻。OO的程式設計風格對于面向過程來說是不是一種文法糖呢?如果生硬地照此了解,隻有計算機硬體指令才不算文法糖,而其他一切利用編譯器、彙編器将代碼抽象,和自然語言更相近的手段都算文法糖。

  舉些例子吧:

  1、c = [b,a][a>b] 取兩個中的最大值

  2、lambda、filter、map、reduce函數

  3、<code>list1=[2*x+1 for x in range(10)]</code>

  4、對清單<code><code>lst = [1, -2, 10, -12, -4, -5, 9, 2]實作排序,按照</code></code>正的放前面,負的放後面,并且分别按絕對值從小到大。即輸出:

<code>   方法是:lst.sort(key=lambda x: (x &lt; 0, abs(x)))</code>

   等同于:<code>lst.sort(key=lambda x: abs(x))---&gt;<code>lst.sort(key=lambda x: x &lt; 0)</code></code>

  5、裝飾器

繼續閱讀