標籤:

Python 的縮進有多重要?

利用codecademy 學習這些語言時 發現 只有python 是通過改變一些空格,對齊後才讓其調試通過的。它的空格有這麼重要嗎?從規範講,這樣看起來確實整齊一些。但是在空格不可見的情況下,如此可能有些苛刻的對齊方式 真的好嗎?另外學習python 需要準備一個刻度尺是一個笑話,還是確有其事呢?


刻度尺是笑話,畢竟如果一段代碼蹦躂出五甚至六層代碼塊,那屬於代碼結構問題,這種東西一般不會存在。再說了,IDE也好好一點兒的編輯器也罷,這種基本功能都從不缺乏。

私以為縮進完全應該是個剛性要求,哪怕是寫C寫JS寫C++寫Java寫Erlang寫不管什麼東西也要嚴格遵守才合適,不說跟別人合作,自己找 bug也是極其有利的。

Python強調縮進可能是整個Python里唯一的新手水平過濾器,不然就Python那門檻,指不定養出多少坑貨來。


1、pep8 規範要求4個空格為語句塊縮進。

2、一般用在賦值語句(等於號 前後空一個空格),函數參數(逗號後,空一個空格)。

還有其它的,請參考pep8 規範PEP 0008 -- Style Guide for Python Code

初學者(4個空格為語句塊縮進)經常犯的錯誤是tab鍵和空間鍵混用,造成的縮進不一致。

凡是報錯信息看到:IndentationError: unexpected indent ,就是表示縮進不一致。

怎麼破?

統一用ide或編輯器的快捷方式縮進或左移。


indentation(縮進)和在python的grammar(語法)里是作為一個token考慮的,而不僅僅是作為美觀因素。換句話說,它和c裡面的大括弧一樣重要,沒有它就不能寫loop不能寫function不能寫class。這樣從syntax角度理解indentation是比較理智的。

刻度尺是笑話,幾個indentation沒有感覺,這code也是白寫了。再說那麼多編輯器都可以顯示「tab」。


連縮進都做不好,還能寫出什麼樣的代碼?

不說了,我去找我的遊標卡尺了


之前我也為這個縮進的問題折騰了好久,後來總算是都解決了,分享一下我個人的小訣竅:

用sublime text 打開你的代碼,全選所有內容就可以看到哪些地方是空格,哪些地方是tab,(PS:sublime里的小點點是空格,橫線是tab)之後替換成一樣的縮進就行了。


覺得縮進最大的問題是阻礙了python匿名函數的發展。

很難想像,可以多行的lambda怎麼寫。:)


非常重要,縮進是用來界定代碼塊的,相當於其他一些編程語言的花括弧。


非常重要。是Python的語法規則,必須遵守,否則就出錯。所以不是什麼坑,是你不了解和尊重這個規則而已。

每種程序設計語言都有自己既定的規則,依靠這些規則和它們提供的其他東西,構建出程序,從而實現解決特定問題,這就是編程的目的。你非要不遵守基本規則去編寫,出了問題,其實當然還是自己的問題。

這不是什麼支持不支持,贊同不贊同的問題。就像不能闖紅燈,這是基本的交通規則。

如果竟然有刻度尺之類的笑話,那也只是學習者在初學時不注意細節導致的,可以理解為基礎沒打牢導致出現後遺症後的自嘲或遷怒?

明白了這些,就知道根本不需要質疑、玩笑或抓狂——任何其他態度都是多餘的。因為就像列印字元串必須加引號一樣,只是一個既定的規則。


縮進是Python語法的一部分,是正確與否的問題,而不僅僅是重要不重要的問題。

真正被縮進坑過的才能理性看待這種語法。如:

1. 複製粘貼網上或電子書上的代碼時產生的縮進混亂;

2. 源文件跨平台產生的換行問題;

3. 閱讀跨屏長度的代碼時不知縮進層次的問題。

更不用說lambda等的問題了!

我的觀點是支持縮進,但不贊同強制縮進!


縮進無比重要,我就試過一段code 死活運行不出來,不段報出各種奇葩的錯誤,最後發現哪裡都沒錯,除了縮進。盡量用Tab鍵 ,用空格鍵的話有時真看不出空了幾格。


推薦閱讀:

Python沒有常量是不是不夠安全的設計?
Python的Dictionary的花括弧,應該換行嗎?
一行 Python 能實現什麼喪心病狂的功能?
Python換行符問題:
還是

如何用Yacc實現一個Python的編譯器?

TAG:Python |