如何使用pyflakes給python做語法檢查

2021-06-18 11:33:11 字數 3502 閱讀 4340

python是一門動態語言。在給python傳引數的時候並沒有嚴格的型別限制。寫python程式的時候,發現錯誤經常只能在執行的時候發現。有一些錯誤由於隱藏的比較深,只有特定邏輯才會觸發,往往導致需要花很多時間才能將語法錯誤慢慢排查出來。其實有一些錯誤是很明顯的,假如能在寫程式的時候發現這些錯誤,就能提高工作效率。最近我發現,可以用pyflakes這個程式對python語法進行語法檢查,這樣可以盡量早的發現錯誤。pyflakes有三種使用方法,第一種是當作命令列工具使用。第二種可以作為vim的外掛程式,在vim編輯器中使用,實現所見即所得。第三種是可以在emacs中使用。

這是乙個命令列工具。在linux下,可以直接執行 『pyflakes 檔名』 對檔案進行語法檢查。

首先要確保vim支援python2.5以上版本,如果不確定是否支援,請在vim中執行命令。

1:version

結果例如:

+代表支援的功能,-代表不支援的功能。由於上圖所示的vim不支援python, 所以需要重新編譯vim。

要編譯支援python2.5以上版本的vim, 第一要具有python2.5以上版本。第二要有vim原始碼,./configure --with-features=huge --enable-pythoninterp 然後再執行make ;make install編譯並且安裝。

確定vim支援python2.5以上版本的方法為,在vim中執行「:python import sys; print sys.version"

然後在.vimrc檔案中增加」filetype plugin indent on「。即可實現在vim編輯器中檢查python語法的功能。

emacs可以通過flymake支援pyflakes。首先要安裝命令列模式的pyflakes, 然後將下面的**加入$home/.emacs

01(autoload 'flymake-find-file-hook"flymake"""t)

02(add-hook'find-file-hook 'flymake-find-file-hook)

03(setq flymake-gui-warnings-enabled nil)

04(setq flymake-log-level 0)

05(when (load"flymake"t)

06(

07defun flymake-pycheckers-init ()

08(

09let*

10(

11(

12temp-file

13(

14flymake-init-create-temp-buffer-copy

15'flymake-create-temp-inplace

16)

17)

18(

19local-file

20(

21file-relative-name

22temp-file

23(

24file-name-directory buffer-file-name

25)

26)

27)

28)

29(

30list"pyflakes"(list local-file)

31)

32)

33

34(add-to-list 'flymake-allowed-file-name-masks

35'("\\.py\\'" flymake-pycheckers-init))

36)

37)

然後在emacs介面中可以顯示python語法錯誤的地方。

如何使用pyflakes給python做語法檢查

如何使用pyflakes給python做語法檢查 costaxu的個人頁面 開源中國社群 如何使用pyflakes給python做語法檢查 python是一門動態語言。在給python傳引數的時候並沒有嚴格的型別限制。寫python程式的時候,發現錯誤經常只能在執行的時候發現。有一些錯誤由於隱藏的比...

py 變數使用

變數只能包含字母,數字,下劃線,且不能以數字開頭 massage ture massage true 1massage false不能包含空格,一般用下劃線來分割其中單詞,例 new massage不要將關鍵字用於變數名 慎用小寫字母1和大寫字母o 容易看成0和1 變數以引用方式賦值 a 100 b...

如何執行py檔案

配置 win10系統 python 3.7 下面是乙個簡單的py檔案 配置系統環境變數 開啟系統環境變數介面,找到path,點編輯,新建python的安裝路徑 不含python.exe 新建批處理命令檔案 用文字編輯器 這裡notepad 寫,儲存為.bat即可。編碼使用ansi,否則雙擊它也打不開...