重學Python(一) 語言規範 Pylint的使用

Kevin Tseng
3 min readJan 18, 2018

--

用了Python大概一年多,期間主要處理爬網、ETL、分析建模等,大多數為一次性任務及單獨開發,所以程式碼很少維護,對於該有的規範與風格都不重視,不過技術債這種東西總有一天會找到你,弊病逐漸顯現之時,未發生慘案與職涯發展著想,還是趕快補課一下吧~

大概看了一下Google開源的語言規範風格規範,了解pep8( Python Enhancement Proposal #8)的規範,可以加強程式的可讀性與降低團隊的溝通成本,試看看Pylint套件,馬上就慘不忍睹,負分到爆XD

期間還遇到一些雷,順便紀錄一下。關於其他檢查的Package比較可參考(1)About style guide of python and linter tool. pep8, pyflakes, flake8, haking, Pylint. (2)Pylint的官方文檔(1.6.5)也很完整

  1. 在Jupyter Notebook使用Pylint?( pep8_magic no windows support!!!)

由於自己慣用此IDE,又是使用Windows,期間遇到不少雷

(1)Pylint的檢查是針對.py檔,但是Jupyter預設所儲存是.ipynb格式像json檔,所以檢查時會很慘,

(2)朝向pep8_magic或autopep8這兩個extension研究,但試了很久才發現,pep8_magic不支援windows,難怪裝不起來orz,autopep8是直接修掉,也不是我的需求,比較想要像Pylint會幫你打分數,然後自己修正,所以就先放棄以cell做校訂的假想。

2. 其實根本不應該用cell打分數阿!

過了幾天想了想,如果用cell打分數,根本就不知道變數宣告或package有沒有import,大概也只能檢查空格或縮排吧,難怪網路上資料不多,因為根本不會有這種奇怪的需求XD 就寫了幾行轉換.ipynb的程式碼,如下:

##用cmd line的方式,把.ipynb 轉成.py檔,也可以直接在jupyter右上角選擇File ## > Download as Python(.py)
!jupyter nbconvert --to python notebook_script.ipynb
## 用os.system只會回傳一個不知道是甚麼的整數,以popen的方法才能在notebook印出##完整訊息(可參考連結),大意是說os.system()單純執行沒甚麼問題,但回傳不太一樣
import os
print(os.popen('pylint notebook_script.py').read())

由於安裝時是使用Anaconda,很多套件都裝好了,沒有Pylint請自行pip install歐~

大概想了幾個項目:Pylint、Yapf、Pycharm、Docstring撰寫、import自己寫的class、Naming、程式碼風格與規範、Git,都是很基礎的東西

--

--

Kevin Tseng
Kevin Tseng

Written by Kevin Tseng

Area about fake news, information operation, data visualization, and data science

No responses yet