今天來探討怎麼留下程式碼紀錄和提升自己的程式碼品質。(終於快寫到一半了XDDD)
程式設計難免會有錯誤,為了要方便除錯和查詢,良好的程式設計應留下程式碼日誌軌跡,以利日後查詢紀錄執行。我們會引用 logging 套件,而 logging 共分 5 個等級。
Level | Illustration |
---|---|
DEBUG | 紀錄開發時候的日誌內容,上線後可以關閉顯示 |
INFO | 紀錄正常情況下的內容 |
WARNING | 紀錄雖然發生不會影響程式執行,但有警示意味 |
ERROR | 紀錄程式執行時發生的錯誤內容 |
CRITICAL | 紀錄最嚴重的錯誤內容 |
可以在開發的時候調整為 DEBUG;上線後就調整為 ERROR。
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('紀錄開發時候的日誌內容')
logging.info('紀錄正常情況下的內容')
logging.warning('紀錄雖然發生不會影響程式執行,但有警示意味')
logging.error('紀錄程式執行時發生的錯誤內容')
logging.critical('紀錄最嚴重的錯誤內容')
import logging
logging.basicConfig(level=logging.ERROR)
logging.debug('紀錄開發時候的日誌內容')
logging.info('紀錄正常情況下的內容')
logging.warning('紀錄雖然發生不會影響程式執行,但有警示意味')
logging.error('紀錄程式執行時發生的錯誤內容')
logging.critical('紀錄最嚴重的錯誤內容')
通常會希望紀錄什麼時間點發生、等級、檔案名稱、第幾行錯
import logging
logging.basicConfig(level=logging.ERROR,
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
logging.debug('紀錄開發時候的日誌內容')
logging.info('紀錄正常情況下的內容')
logging.warning('紀錄雖然發生不會影響程式執行,但有警示意味')
logging.error('紀錄程式執行時發生的錯誤內容')
logging.critical('紀錄最嚴重的錯誤內容')
import logging
logging.basicConfig(level=logging.ERROR,
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
filename='test.log')
logging.debug('紀錄開發時候的日誌內容')
logging.info('紀錄正常情況下的內容')
logging.warning('紀錄雖然發生不會影響程式執行,但有警示意味')
logging.error('紀錄程式執行時發生的錯誤內容')
logging.critical('紀錄最嚴重的錯誤內容')
為提高大家的程式碼品質,我們特別提到這個章節,希望大家會學到:
Python Enhancement Proposals,規範與定義 Python 的技術規格,讓開發社群有共同遵循的標準。由於規範很多,大家可以直接點下面連結參考,本篇著重於套件展示。
https://www.python.org/dev/peps/
autopep8 是一個開源的命令行工具,它能夠將 Python 代碼自動格式化為 PEP8 風格。autopep8 使用 pycodestyle 工具來確定代碼中哪一部分需要被格式化,修復這部分問題的 pycodestyle 工具版。 autopep8 製造也是一個 Python 語言寫寫的工具,因此,我們可以直接使用 pip 進行:
pip install autopep8
原本的程式碼
import os, sys
def main():
print [item for item in os.listdir('.') if item.endswith('.py')];
print (sys.version)
if __name__ == '__main__':
main()
更改後
autopep8 test01.py
如果沒有 --in-place,則不會覆蓋檔案
Flake8是由Python官方發布的輔助檢測Python代碼是否規範的工具,相對於當前熱比較高的Pylint,Flake8檢查規則靈活,支持集成額外插件,擴展性強。
pip install autopep8
實際使用看看
為您的程式碼品質打上分數!!
pylint是一個Python代碼風格的檢查工具, 它依據的標準是 PEP8。
pip install pylint
實際使用看看
接著照著 pylint 給的建議,就可以改高分一點(改程式樸實無華的樂趣)