python中空格和table混用報錯原因

2021-10-19 19:15:17 字數 1815 閱讀 9107

python是一門嚴格遵守縮排的語言,縮排的規則代表著程式的層級關係。我們來看一段**。

class

myform

(form)

: value1 =

stringfield

('value1'

) value2 =

stringfield

('value2'

) value3 =

stringfield

('value3'

) #這行用的是tab縮排

submit =

submitfield

('submit'

) learn python =

'qq group:725479218'

看起來這個value3變數和其他的變數沒有什麼不同,然而卻出現了這樣的報錯——縮排錯誤。

value3 =

stringfield

('value3'

)indentationerror: unexpected indent

其實python並沒有強制要求你用tab縮排或者用空格縮排,甚至空格按幾個都沒有強制要求,但是卻絕對!絕對不能混用tab和空格,那麼這裡,是不是空格和tab的區別就顯得很大了呢?

這個時候有的童鞋就要說了,我用pycharm(或者其他ide)怎麼從來都沒有出現這樣的問題呢?

其實,很多ide對tab鍵做了各種各樣的優化,其中有一條就是,將tab鍵展開為為空格,也就是說,當你按下tab的時候,ide實際上幫你把乙個「9」轉換成了四個(或者八個)「32」。但是要注意,不是所有的ide都幫你做了這樣的工作!同理,對於好純潔好不做作的編輯器vim來說,肯定也不會幫你做這樣的工作了。

既然tab在不同的環境下展現不一樣,而空格卻永遠都是一樣的。對於一些細緻排版縮排來說(比如說想把每一行的注釋都對齊),用空格也更加精確。這樣看起來,確實是用空格來寫**要好於用tab呢。

空格代替tab的好處:

空格在各種情況下**都是你想要的樣子。而 tab 僅僅當你與**作者的 tab 尺寸設定為相同時,**才好看。修改 tab 尺寸並不能解決這個問題,因為你很難做到每開啟乙個檔案就修改一次 tab 尺寸,而每個人通常有不同的習慣(posix/unix 標準的 tab 應當為 8 字元寬度,linus 大神也規定 linux 核心中所有**的 tab 尺寸為 8)。如果存在行尾注釋,則 tab 尺寸更加是必須設定為與作者相同,這就意味著你看不同的**需要經常修改 tab 尺寸。我看過許多**,其使用的 tab 尺寸有從 2,3,4,5,6,8,16 甚至 32 的,如果你使用的 tab 尺寸與作者不同,外觀將很不理想。

靠譜的ide都能解決前進後退增加減少縮排的問題,即便是四個空格,乙個退格鍵也能全退了,所以在使用的方便性方面根本不存在問題。——如果抱怨刪除調整還不能有效解決的,你需要研究一下你的編輯器了。實際上增加減少縮排在主流編輯器中都直接有快捷鍵,無論是 tab 還是空格還是退格都很少直接被用於縮排。

tab 是製表符而不是縮排符,正如在 html 頁面中大量使用

進行布局是個不好的程式設計習慣一樣,在程式設計中大量使用製表符布局通常也不是個好習慣。

一般情況下,團隊開發都要制定一套編碼規範, 在大部分團隊中,使用4個空格代替tab是大家預設的。所以非常建議大家使用空格代替tab, 另外各個ide(編輯器)都提供了tab自動轉換空格的功能,只要大家設定一下,按下tab鍵就可以出現4個或者多個空格。

更多學習內容,python學習網。

html中空格顯示

html提供了5種空格實體 space entity 它們擁有不同的寬度,非斷行空格 是常規空格的寬度,可執行於所有主流瀏覽器。其他幾種空格 在不同瀏覽器中寬度各異。它叫不換行空格,全稱no break space,它是最常見和我們使用最多的空格,大多數的人可能只接觸了 它是按下space鍵產生的空...

程式設計中空格的使用

空行 l 空行起著分隔程式段落的作用。空行得體 不過多也不過少 將使程式的布局更加清晰。空行不會浪費 記憶體,雖然列印含有空行的程式是會多消耗一些紙張,但是值得。所以不要捨不得用空行。l 在每個類宣告之後 每個函式定義結束之後都要加空行。l 在乙個函式體內,邏揖上密切相關的語句之間不加空行。行 l ...

在C和C 中空格的影響

今天在看c 的vector類的時候,遇到了乙個問題。原始碼如下 int main 結果出了問題 e xuexi c clearn.cpp 19 error c2143 syntax error missing before e xuexi c clearn.cpp 19 error c2059 sy...