python-tab還是space?


今天把windows下的python代碼傳到服務器上,結果莫名其妙的報了一堆indent的錯誤

網上建議說用: python -m tabnanny filename.py 查一下

然后就用space把有問題的行的tab都換了,程序代碼一點沒改,就好了

 

不明白,為甚啊?於是搜了下~

發現PEP-8上說:Spaces are the preferred indentation method. 

//PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment

其實就是說,有些人的編輯器tab是空8個space,有些人的tab是空4個space,並且有些編輯器對tab的顯示各不相同,如果tab和space混用了看起來可能

在python2中可以使用-t選項,它就會檢查哪些地方混用了tab和space,並提出警告

當用-tt選項的時候,檢查的要求會更嚴格,警告就會變成錯誤

 

不過如果已經出現了這種混用的錯誤,暫時我還木有找到什么好辦法快速更正誒,只能重新一個個space的輸入

 

******************************************************************************

昨天的問題有了解決方法

如果遇到:unexpected indent

或者:unindent does not match any outer indentation level

那么原因是,你的源文件里混用了space和tab

既然PEP-8建議說使用space,但是我們又不想一個space一個space的輸入

那么就讓vim把我們的tab自動轉換為space,設置方法如下:

(什么叫做設置?,就是說讓你修改用戶目錄下的.vimrc文件。沒有這個文件?那就touch建一個)

set expandtab        用space替代tab的輸入

%ret! 4                 每個tab用4個space替代

其他一些設置還可以有:

set tabstop=4        設定tab寬度為4個字符

set shiftwidth=4     設定自動縮進為4個字符

set noexpandtab      不用space替代tab的輸入

設置成這樣以后,當你tab縮進一個,然后再backspace往前刪的時候,你會發現你的光標是一個space一個space的往前跳,而不是一個tab一個tab的跳了

這說明你剛剛輸入的tab其實都是space


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM