使用 Python 時絕對不應該做什麼?
在這篇文章中,我們將學習在使用 Python 時絕對不應該做什麼。
謹慎使用類變數
在 Python 中,類變數被用作字典,並被稱為方法解析順序 (MRO)。此外,如果一個類缺少一個屬性,那麼該類就缺少一個特性。也就是說,如果您修改了類中的內容,其他類也不應該發生變化。
縮排不當
在 Python 中,縮排至關重要。Python 線上使用縮排,這與 Java、C++ 和其他使用花括號構建程式碼塊的程式語言不同。許多特性都受到縮排的影響。一些 Python 縮排問題比其他問題更難檢測。因此,由於許多 Python 特性依賴於縮排,因此應始終保持一致的縮排風格。因此,在 Python 中,縮排非常重要。
最好為縮排提供4 個空格或一個製表符。
大小寫敏感
Python區分大小寫。這意味著變數"number"和"Number"是不同的。並且因為這是 Python 新手最常犯的錯誤之一。
示例
number = 5 print(Number)
輸出
Traceback (most recent call last): File "main.py", line 2, inprint(Number) NameError: name 'Number' is not defined
修改和迭代列表
軟體工程師經常犯的一個常見錯誤是在迭代列表時從中刪除專案。但是,Python 使用獨特的程式設計正規化來克服這個問題。
當正確使用時,正規化可以簡化並隨後簡化程式碼,確保不會意外刪除和迭代任何重要專案。
變數繫結
這是一個學習者難以理解和欣賞的主題。Python 支援延遲繫結。Python 開發人員經常對 Python 如何繫結變數感到困惑。它繫結其變數的閉包或在周圍的全域性作用域中,因此在呼叫內部函式時查詢閉包中使用的變數的值。
誤用“_ _ del _ _”
“_ _ del _ _”方法只能在某些情況下使用,而不是一直使用。否則,將丟擲“AttributeError”異常。當呼叫命令“_ _ del _ _”時,程式碼中的名稱將設定為“None”。相反,請使用"atexit.register()"在關閉直譯器之前啟動已註冊的處理程式。
誤用 __init__
建構函式在 Python 中由名為 __init__ 的函式表示。當建立物件時,會呼叫 __init__ 方法,該方法分配記憶體並初始化類的屬性。因此,嘗試從 init 方法顯式返回值可能會產生多個錯誤並導致程式碼出現問題。
帶有預設引數的函式呼叫
對於初學者來說,帶有預設引數的函式是 Python 中的一項很棒的功能。引數很難使用。因為 Python 在每次宣告函式時都會評估預設引數中的表示式,所以必須動態生成預設引數。因此,必須注意這一點。
誤用表示式
在 Python 中,您可以透過為函式引數分配預設值來使其可選。但是,當您靜默預設值時,這種行為可能會令人困惑。
為了防止錯誤地使用表示式,請為可選引數提供適當的值,因為函式引數的預設值只考慮一次——一旦聲明瞭函式。
名稱衝突
Python 擁有廣泛的庫模組,因此它有很多東西可以提供給軟體開發人員也就不足為奇了。但是,如果您選擇避免這種財富,則有可能發生名稱衝突。當您其中一個模組的名稱與 Python 標準庫中具有相同名稱的模組混淆時,就會發生衝突。
因此,您可以匯入另一個庫,這可能會干擾您標準庫版本的模組。因此,避免選擇與 Python 標準庫模組中名稱相似的名稱。我們始終可以透過提交Python 增強提案 (PEP)來請求更名。
建立迴圈模組依賴項
因為 Python 瞭解不要重新匯入某些內容,所以擁有迴圈模組依賴項起初可能看起來很安全。但是,您可能會在某些時候遇到 AttributeError 異常,這是不希望的。解決方案是什麼?使用a ().更改模組。
不使用註釋和文件字串
註釋是程式設計的重要組成部分。註釋提高了程式碼的可讀性和自解釋性。如果您不使用註釋或文件字串會發生什麼?這可能很可怕!程式碼可以從 10 行快速增長到 10,000 行,從而使除錯變得困難。因此,使用註釋和文件字串確實非常有益。
犯錯誤是生活和程式設計的自然組成部分。錯誤可能會發生,但瞭解可能發生的錯誤以及如何修復它們至關重要。
未正確指定引數
“正如人們所料,except 語句沒有考慮異常列表,”科技博主 Rory Barak 爭辯道。“相反,語法異常將異常連線到指定的可選第二個引數。”之後,'IndexError' 異常未被 except 語句檢測到,並且未正確作為引數給出。”
“一種選擇是將第一個引數定義為包含所有必要異常的元組,同時使用關鍵字'the'。”
結論
透過避免這些常見的 Python 錯誤,您可以確保您的程式碼不僅在邏輯上合理,而且在長期內也能正常工作。始終仔細檢查您的程式碼並更正任何看起來不正確的內容。您最不希望看到的是最終得到一個充滿錯誤的程式碼。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP