怎么解決python的tab空格報(bào)錯(cuò)?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
瑪沁ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
python是一門嚴(yán)格遵守縮進(jìn)的語言,縮進(jìn)的規(guī)則代表著程序的層級(jí)關(guān)系。我們來看一段代碼。
class MyForm(Form): value1 = StringField('value1') value2 = StringField('value2') value3 = StringField('value3') #這行用的是Tab縮進(jìn) submit = SubmitField('Submit') learn python = 'QQ group:725479218'
看起來這個(gè)value3變量和其他的變量沒有什么不同,然而卻出現(xiàn)了這樣的報(bào)錯(cuò)——縮進(jìn)錯(cuò)誤。
value3 = StringField('value3') IndentationError: unexpected indent
其實(shí)Python并沒有強(qiáng)制要求你用Tab縮進(jìn)或者用空格縮進(jìn),甚至空格按幾個(gè)都沒有強(qiáng)制要求,但是卻絕對(duì)!絕對(duì)不能混用Tab和空格,那么這里,是不是空格和Tab的區(qū)別就顯得很大了呢?
這個(gè)時(shí)候有的童鞋就要說了,我用PyCharm(或者其他IDE)怎么從來都沒有出現(xiàn)這樣的問題呢?
其實(shí),很多IDE對(duì)Tab鍵做了各種各樣的優(yōu)化,其中有一條就是,將Tab鍵展開為為空格,也就是說,當(dāng)你按下Tab的時(shí)候,IDE實(shí)際上幫你把一個(gè)「9」轉(zhuǎn)換成了四個(gè)(或者八個(gè))「32」。但是要注意,不是所有的IDE都幫你做了這樣的工作!同理,對(duì)于好純潔好不做作的編輯器Vim來說,肯定也不會(huì)幫你做這樣的工作了。
既然Tab在不同的環(huán)境下展現(xiàn)不一樣,而空格卻永遠(yuǎn)都是一樣的。對(duì)于一些細(xì)致排版縮進(jìn)來說(比如說想把每一行的注釋都對(duì)齊),用空格也更加精確。這樣看起來,確實(shí)是用空格來寫代碼要好于用Tab呢。
空格代替Tab的好處:
空格在各種情況下代碼都是你想要的樣子。而 tab 僅僅當(dāng)你與代碼作者的 tab 尺寸設(shè)定為相同時(shí),代碼才好看。修改 tab 尺寸并不能解決這個(gè)問題,因?yàn)槟愫茈y做到每打開一個(gè)文件就修改一次 tab 尺寸,而每個(gè)人通常有不同的習(xí)慣(POSIX/Unix 標(biāo)準(zhǔn)的 tab 應(yīng)當(dāng)為 8 字符寬度,Linus 大神也規(guī)定 Linux 內(nèi)核中所有代碼的 tab 尺寸為 8)。如果存在行尾注釋,則 tab 尺寸更加是必須設(shè)定為與作者相同,這就意味著你看不同的代碼需要經(jīng)常修改 tab 尺寸。我看過許多代碼,其使用的 tab 尺寸有從 2,3,4,5,6,8,16 甚至 32 的,如果你使用的 tab 尺寸與作者不同,外觀將很不理想。
靠譜的IDE都能解決前進(jìn)后退增加減少縮進(jìn)的問題,即便是四個(gè)空格,一個(gè)退格鍵也能全退了,所以在使用的方便性方面根本不存在問題?!绻г箘h除調(diào)整還不能有效解決的,你需要研究一下你的編輯器了。實(shí)際上增加減少縮進(jìn)在主流編輯器中都直接有快捷鍵,無論是 tab 還是空格還是退格都很少直接被用于縮進(jìn)。
tab 是制表符而不是縮進(jìn)符,正如在 html 頁面中大量使用