日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 中用什么键缩进 —— tab 还是空格?

發布時間:2025/3/15 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 中用什么键缩进 —— tab 还是空格? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python 中用什么鍵縮進—— tab 還是空格?

實驗設計

實驗環境:Python 3.5.2
特別說明:我的編輯器設置tab寬度是4個空格,可是代碼發到CSDN上就變成8個空格了,真奇怪。請各位看官見諒。

假設要縮進的塊有3行。代碼如下

if 10>4:print("hello")print("hello")print("hello")

其中2~4行是要縮進的塊語句。

實驗內容如下:

  • 每一行都用1個 tab 鍵縮進,注意:編輯器中沒有設置把 tab 轉換為空格,也就是說 tab 就是 tab,它的 ASCII 值是 0x09
  • 第一行用1個 tab,第二行用 2個 tab, 第三行用1個 tab,看看會不會報錯
  • 用空格鍵縮進,每一行都用1個空格。空格的 ASCII 值是 0x20
  • 第一行用1個空格,第二行用1個空格,第三行用2個空格,看看會不會報錯
  • 混合用tab和空格:第一行用1個tab(編輯器中設置一個tab的寬度是4個空格),第二行用1個tab,第三行用4個空格,看看會不會報錯
  • 混合用tab和空格:每一行都用4個空格 + 一個tab
  • 實驗過程

    實驗1

    每一行都用1個 tab 鍵縮進,代碼看起來是這樣的:

    if 10>4:print("hello")print("hello")print("hello")

    運行結果是:

    hello hello hello

    沒有報錯。

    我們看一下代碼的 ASCII,以確定用的確實是 tab


    tab 的 ASCII 值是 0x09, 它前面的 “0D 0A”是Windows的回車。

    實驗2

    第一行用1個 tab,第二行用 2個 tab, 第三行用1個 tab,看看會不會報錯。代碼看起來這樣:

    if 10>4:print("hello")print("hello")print("hello")

    運行結果報錯了,第3行有錯

    File "tab_or_space.py", line 3print("hello")^ IndentationError: unexpected indent

    看一下 ASCII 碼,確定確實用了不同個數的 tab

    通過上面的2個實驗,可以得出結論:

    用 tab 縮進是可以的,但是要保證每行用同樣個數的 tab 。

    實驗3

    用空格鍵縮進,每一行都用1個空格。代碼看起來這樣:

    if 10>4:print("hello")print("hello")print("hello")

    看一下 ASCII 碼,確定我們用的是空格(ASCII 值是 0x20)

    運行結果呢?沒有問題,和實驗1的結果一樣,這里就不貼了。

    實驗4

    第一行用1個空格,第二行用1個空格,第三行用2個空格,看看會不會報錯

    代碼如下:

    if 10>4:print("hello")print("hello")print("hello")

    運行時候報錯了,第4行有錯

    File "tab_or_space.py", line 4print("hello")^ IndentationError: unexpected indent

    通過實驗3和實驗4,可以得出結論:

    用空格縮進是可以的,但是要保證每行用同樣個數的空格 。

    實驗5

    混合用tab和空格:第一行用1個tab(編輯器中設置一個tab的寬度是4個空格),第二行用1個tab,第三行用4個空格。

    首先對編輯器做一個設置,我用的是 notepad++

    TAB 的寬度是4,并且沒有勾選“替換為空格”

    代碼看起來是這樣的(感覺很整齊):

    if 10>4:print("hello")print("hello")print("hello")

    看一下 ASCII 碼,就知道空格和 tab 混用了。

    運行結果呢?

    File "tab_or_space.py", line 4print("hello")^ IndentationError: unindent does not match any outer indentation level

    第4行報錯了。

    我們把代碼調整一下,第一行用1個tab,第二行用4個空格,第三行用4個空格。

    ASCII 的截圖是:

    運行結果是:

    File "tab_or_space.py", line 3print("hello")^ IndentationError: unindent does not match any outer indentation level

    第三行報錯。

    也就是說,空格和tab不能混用,但是下這個結論還不夠嚴謹,于是我設計了實驗6。

    實驗6

    混合用tab和空格:每一行都用4個空格 + 一個tab

    哦,我想起來了,貼 ASCII 碼實在是麻煩,編輯器有一個顯示空格和制表符的功能。咱們顯示出來后貼個代碼截圖圖。

    運行結果呢?你猜猜。哈哈,成功運行。

    hello hello hello

    雖然可以成功運行,但這樣做就是“作”。你能記住到底用多少個空格和tab嗎?我是記不住。

    實驗結論

    做了這么多實驗,終于可以得出結論了:

    Python中縮進可以用空格,也可以用tab,甚至可以混用(比如每一行你先用1個tab,再用4個空格,再用2個tab,再用4個空格);

    不管你怎么縮進的,你都要保證,第二行和第一行用的字符一樣,第三行和第二行用的字符一樣,…… ,也就是每一行用的字符一樣。

    最佳實踐

    其實 Python 并沒有強制要求你用Tab縮進或者用空格縮進,但在 PEP8中,建議使用4個空格來縮進。
    Python Enhancement Proposals index 8 —— Style Guide for Python Code
    https://www.python.org/dev/peps/pep-0008/

    Use 4 spaces per indentation level.

    有人會問,為什么用空格?用 tab 多方便。

    我要說:不僅僅是python,對于任何編程語言來說用space替代tab都是一個好的選擇。

    因為代碼文件可能會在不同的環境、用不同的編輯器打開。對于space的處理,幾乎所有的編輯器、OS都是一樣的;而對于tab的處理卻不盡相同,有的會直接展開成空格,有的不會,就算展開為空格,有的是4個,有的是8個……這樣會造成代碼的格式看起來不一致。對于python來說這個問題更加致命,因為縮進是python語法的一部分——python靠縮進表示塊結構。對于Python,就算看起來整齊,也不能保證每一行都用了一致的tab或空格,所以會惹來很多麻煩。

    又有人問,每次按4個空格多麻煩,有沒有簡單點的方法?

    當然有了,對于任何一個編輯器或者IDE,一般都有配置選項,可以設置把 TAB 鍵展開為4個空格。

    notepad++ 應該這樣設置:

    設置好后,我嘗試敲擊TAB,發現其實被換成了4個空格。

    對于 VIM,可以這樣設置

    set tabstop=4 "設置Tab顯示的寬度為4個空格 set expandtab "設置將Tab自動展開成為空格

    = 全文完 =


    參考資料

    【1】https://segmentfault.com/q/1010000000158915

    【2】https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces

    【3】https://www.jianshu.com/p/7d27858b8d2b

    總結

    以上是生活随笔為你收集整理的python 中用什么键缩进 —— tab 还是空格?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。