Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

Python可以減少代碼量?我不信

2020 年 1 月 1 日 烟草的香味

突然看到好幾篇文章,內容基本上是什麽用Java需要100行,用PHP只需要30行,用Python只需要10行(數字記不清了)。簡單說一下我的看法。

我不服,憑啥都是編程語言,你行我就不行?

我記不清當時給出的支持Python可以少寫代碼的栗子具體是什麽了,它給出的是實現了某個功能,兩行搞定,一行引入,一行調用。

當時看的我一臉懵逼,哇,真的耶。只用一行就可以。但稍後一想,這也太扯了吧。你看著貌似是只調用了一行代碼,但裏邊具體的實現不還是有的麽?代碼量並沒有減少,只不過是搬到了你看不到的地方,假象罷了。

當然,我是支持用Python可以少寫代碼的,但並不是剛才說的那樣。

在我看來,這個問題得從語法層面來說,只有語法支持,才算真的能夠減少代碼量。其實各個語言都有其特定的語法。就像PHP中變量直接當函數用,直接當類用,連反射都不用了。

舉個栗子就是大家都熟悉的lambda。現在有一個需求,要接收外部穿進來的函數。給出不同語言的實現

Java版本

// 因爲Java中一切都是對象,所以盡管提供了lambda的支持,但並不能直接調用函數,而是以接口的形式調用
interface MathTest {
    int add(int a, int b);
}
// 接收lambda的函數
void dispose(MathTest mt){
    int v = mt.add(1, 3);
}
// 調用函數的地方
dispose((x, y) -> x + y)

因爲Java一切皆是對象,lambda其實就是一個匿名內部類。

PHP版本

// 接收函數
function dispose($fun){
    $v = $fun(1, 3);
}
// 調用的地方
dispose(function($a, $b){
    return $a + $b;
});

PHP可以直接傳函數,已經很方便的,但是不支持lambda,還是需要正兒八經的寫個函數傳過去。

Python版本

def dispose(fun):
    v = fun(1, 3)
dispose(lambda x, y: x+y)

Python既可以直接傳函數,又支持lambda表達式。

當然,還有一些其他的語法,是可以稍稍體現一哈Python的獨到之處的。嘿嘿

簡單羅列了一些Python的語法支持,確實是不用寫過多代碼就能實現相關功能。

元素交換

a,b = b,a

實現兩個元素值的交換,無需臨時變量。

數組生成

list = [x for x in range(20) if x%2 == 0]

生成偶數列表,這個一行搞定,舒服。

列表切片

list[1:4]

對列表的各種切片操作。


其實,Python最大的特點就是,他沒有大括號。剛開始從Java到Python時,看著沒有大括號的程序,很順眼。但現在用了一段時間的PHP,又突然感覺沒有大括號有點別扭。哼,男人。

相關文章:

  • 新加坡的Z世代比千禧一代更精于理財?我不信
  • 送給拿新加坡護照的小夥伴的秘籍!我不信
  • 以前聽人說笑容能戰勝一切,我不信,直到今天看到鍾老他笑了
  • 26歲女孩的腎,竟然來自只活了23天的嬰兒:謝謝你給我的生命,我會替你好好活下去
  • 女孩離世棺材突然落地,裡面出現兩具屍體,全村人熱淚盈眶!
  • 小坡的故事(全文)老舍
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們