博客專欄

        EEPW首頁 > 博客 > Python寫碼時應該縮進使用tab還是空格

        Python寫碼時應該縮進使用tab還是空格

        發布人:only1 時間:2020-09-24 來源:工程師 發布文章

          在目前生活中,隨著互聯網技術要求越來越高,也導致程序員們不斷的學習才能進步,比如最簡單的代碼縮進問題,對于程序員來說,其實Tab和空格遠遠不只是“立場”問題那么簡單。在不同的編輯器里tab的長度可能不一致,所以在一個編輯器里用tab設置縮進后,在其它編輯器里看可能縮進就亂了。空格不會出現這個問題,因為空格就占一個字符的位置。

          眾所周知,Tab在ASCII碼中,編碼是9,而空格是32。這也就是說,當我們按下一個Tab的時候,即使它看起來就是8個空格(或者4個空格,不同的環境下,Tab可能顯示的效果不同),對于電腦來說,卻是完全不一樣的東西。這也意味著,對于用字符來描述過程的代碼來說,極有可能會是決定性的差異。


          尤其是對于一門用空格縮進來區分代碼層次的語言——Python,我們來看一段代碼。


          classMyForm(Form):


          value1=StringField('value1')


          value2=StringField('value2')


          value3=StringField('value3')#這行用的是Tab縮進


          submit=SubmitField('Submit')


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


          value3=StringField('value3')


          IndentationError:unexpectedindent


          其實Python并沒有強制要求你用Tab縮進或者用空格縮進,甚至空格按幾個都沒有強制要求(但在PEP8中建議了使用4個空格作為縮進,但是卻絕對!絕對不能混用Tab和空格,那么這里,是不是空格和Tab的區別就顯得很大了呢?


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


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


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


          空格代替Tab的好處:


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


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


          3、tab是制表符而不是縮進符,正如在html頁面中大量使用進行布局是個不好的編程習慣一樣,在編程中大量使用制表符布局通常也不是個好習慣。


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


          以上就是關于扣丁學堂Python培訓之寫碼時應該縮進使用tab還是空格的詳細介紹,最后想要了解更多關于Python發展前景趨勢,請關注扣丁學堂官網、微信等平臺,扣丁學堂IT職業在線學習教育平臺為您提供權威的Python視頻教程系統,通過千鋒扣丁學堂金牌講師在線錄制的第一套自適應Python在線視頻課程系統,讓你快速掌握Python從入門到精通開發實戰技能。扣丁學堂Python技術交流群:816572891。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞:

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 台东市| 韶山市| 龙游县| 冷水江市| 通渭县| 甘孜县| 岐山县| 正阳县| 辛集市| 左贡县| 宜兴市| 潮安县| 五华县| 建水县| 舟曲县| 德阳市| 彩票| 都江堰市| 班戈县| 乐业县| 乐亭县| 桐梓县| 宜兴市| 民乐县| 徐闻县| 青铜峡市| 县级市| 呼和浩特市| 贺州市| 泽库县| 霍邱县| 米易县| 伊宁县| 望都县| 九台市| 方山县| 东明县| 沂南县| 洛宁县| 招远市| 拜泉县|