Python 太糟糕了?開發者總結了 8 大原因

2021-09-19 15:06:27 字數 2082 閱讀 4973

開發四年只會寫業務**,分布式高併發都不會還做程式設計師? >>>

有開發者發文表達了他覺得 python 不行的 8 大原因。

作者對每一項「缺點」都進行了分析,全文洋洋灑灑,概括起來 8 個原因分別是:

1、版本不相容

python 3 與 python 2 不完全相容。作者以 perl 語言和創造了世界上早期個人電腦的 commodore 為例,分析了缺乏向後相容性和分離版本是如何導致失敗的。

2、安裝問題

執行 apt、yum 與 rpm 等工具可以獲取並安裝大多數軟體包的最新**,但是在使用 apt-get install python 或者 pip install python 安裝 python 的時候你不知道實際被安裝的是哪個版本,而這可能與你所需要的**不相容。安裝時需要指定 python 版本。

3、縮排規則

乍一看,python **似乎非常易讀,但是在大型**庫中並不是這樣。pyhon 的四格縮排允許深度巢狀,但是巢狀太多層的話會導致**在文字編輯器中換行,變得混亂。而長函式和長條件操作可能使得難以匹配語法的開始與結束。給除錯帶來了很大的困難。

4、**匯入方式

python 的匯入方式 import 允許引入整個模組、模組的一部分或模組中的特定函式。作者認為 python 這種匯入規則使得查詢可匯入的列表並不直觀。c 中可以直接檢視 .h 標頭檔案,但是 python 需要使用 python -v 列出引用所在位置,之後搜尋該列表中每個目錄和子目錄中的每個檔案。

此外,python 的匯入機制還允許使用者重新命名匯入的**,作者認為重新命名模組非常適合小指令碼,但是對於長程式來說真的很糟糕,因為它會影響**的可讀性和長期支援。

而更糟糕的地方在於,對於大多數語言來說,匯入**就只是匯入**,如果存在帶有建構函式的全域性物件,那麼一些語言會執行**,但這通常被認為是一種不好的做法。而許多 python 模組在匯入期間就執行初始化函式,這導致你不清楚什麼正在執行,不知道它在做什麼,需要花很多時間來追蹤。

5、命名法

作者認為 python 沒有使用通用並且專業的術語描述語言本身。比如在其它所有語言中,陣列都稱為 arrays,但是在 python 中,它被稱為 lists;關聯陣列有時稱為 hash(perl),但 python 稱之為 dictionary。**庫命名方法也是這樣,像 pypy、pypi、numpy、scipy、sympy、pygtk、pyglet 與 pygame 這些庫,它們名稱中的「py」有時放在開頭,有時又放在後邊,沒有統一。而類似 matplotlib、nose、pillow 和 sqlalchemy 的一些常見庫甚至直接放棄了「py」這種命名約定。

作者將 python 描述為「具有可怕且不一致的命名約定的庫的集合」。

6、怪癖

每種語言或多或少都有自己的怪癖,但是 python 比其它語言都多。以字串的操作為例,在 python 中,單引號和雙引號之間沒有區別。但是,如果想要字串跨行,則需要使用三引號 """string""" 或 ```string```;如果想使用二進位制檔案,那麼需要使用 b'binary' 或 r'raw';有時需要使用 str(string) 將字串轉換為字串,或使用 string.encode('utf-8') 將其轉換為 utf8。

7、按物件引用傳遞變數

大多數程式語言都按值傳遞函式引數,但是 python 預設使用 pass-by-object-reference 引數執行函式,這意味著更改源變數可能會使引用值改變。這是程式、函式和和物件導向程式設計語言之間的重大差異之一,如果每個變數都是通過物件引用傳遞的,並且對變數的任何更改都會在任何地方更改引用,那麼可以直接使用全域性變數來處理所有變數。但是全域性變數的弊端是有目共睹的。

8、本地名稱

gcc -o screencapture.exe screencapture.c -lscreencapture
假如在使用名為「libscreencapture.so」的 c 庫測試截圖程式,可以呼叫自己的程式「screencapture.c」並編譯成「screencapture.exe」。

Python 太糟糕了?開發者總結了 8 大原因

有開發者發文表達了他覺得 python 不行的 8 大原因。作者對每一項 缺點 都進行了分析,全文洋洋灑灑,概括起來 8 個原因分別是 1 版本不相容 python 3 與 python 2 不完全相容。作者以 perl 語言和創造了世界上早期個人電腦的 commodore 為例,分析了缺乏向後相容...

Python 太糟糕了?開發者總結了 8 大原因

有開發者發文表達了他覺得 python 不行的 8 大原因。作者對每一項 缺點 都進行了分析,全文洋洋灑灑,概括起來 8 個原因分別是 1 版本不相容 python 3 與 python 2 不完全相容。作者以 perl 語言和創造了世界上早期個人電腦的 commodore 為例,分析了缺乏向後相容...

優秀的開發者 vs 糟糕的開發者

優秀的開發者是乙個藝術家,乙個享受創作過程的工匠。糟糕的開發者只將自己當作負責產生 的碼農。優秀的開發者了解客戶的問題。糟糕的開發者只了解手頭的技術問題。優秀的開發者會不斷努力去理解 為什麼 然後去實現,同時能夠把握大局。糟糕的開發者專注於構建類 方法和配置檔案,而不理會大局。糟糕優秀的開發者了解產...