2008-09-09 56 views
2

我最近很享受Python編程。我來自對基於C語言編碼的強烈熱愛的背景,在這種背景下,一切都可能比應該更復雜(但至少把頭髮放在胸前)。因此,從C到Python切換更復雜的東西,不需要太多的速度,這比編寫項目時的麻煩更有幫助。然而,從肉眼可以看到的括號和括號和結構的這片土地上,我遇到了一個小問題:我覺得Python很難閱讀。改善Python的可讀性?

例如,以下文本塊是我很難破譯,除非我盯着它(我不喜歡這樣做):

if foo: 
    bar = baz 
    while bar not biz: 
     bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 

did_i_not_warn_you_biz() 
my_father_is_avenged() 

在該年底出現的問題,如果塊:全部然後突然回到一個震動塊,感覺幾乎令人不安。作爲一個解決方案,我已經開始編碼我的Python這樣的:

if foo: 
    bar = baz 
    while bar not biz: 
     bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 
    #-- while -- 
#-- if -- 

did_i_not_warn_you_biz() 
my_father_is_avenged() 

而這一點,對於一些奇怪的原因,讓我更能夠讀自己的代碼。但我很好奇:有沒有其他人與我的奇怪的問題找到更簡單的方法來使他們的標籤出來的代碼更具可讀性?我很想知道在這成爲我的一個巨大習慣之前是否有更好的方法來做到這一點。

回答

23

學習新編程語言的一部分是學習使用該語言閱讀代碼。像這樣的柺杖可能會讓您更容易閱讀您自己的代碼,但這會阻礙學習如何閱讀其他人的Python代碼的過程。我真的認爲你最好擺脫塊註釋的結束並習慣於普通的Python。

8

您可以嘗試增加縮進大小,但總的來說,我只是說,放鬆一下,它會隨着時間而來。我不認爲試圖讓Python看起來像C是一個非常好的主意。

3

也許最好的辦法是在編輯器中打開「顯示空白」。然後你會看到每一行有多少標籤(通常是一串點),當這種變化時它會更明顯。

+0

如果從空白本身來看縮進不明顯,那麼要麼是它不夠(四列縮進只用空格,每個PEP 8)或者你沒有以等寬字體讀取它。在決定讓空白看起來像別的東西之前,其中的任何一個都需要修復。 – bignose 2009-05-03 14:02:53

15

我喜歡在塊周圍放置空白線,以使控制流更加明顯。例如:

if foo: 
    bar = baz 

    while bar not biz: 
     bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 

did_i_not_warn_you_biz() 
my_father_is_avenged() 
7

與其側重於使現有結構更具可讀性相關,您應該專注於製作更多邏輯結構。創建更小的塊,儘量不要過多地嵌套塊,創建更小的函數,並嘗試更多地考慮代碼流。

如果您發現無法快速確定代碼的結構,您應該考慮重構並添加一些註釋。代碼流應該總是立即顯而易見 - 您必須考慮的越多,代碼的可維護性就越差。

+0

我發現我的Python代碼比我的C++代碼更平坦。不知道爲什麼。 – 2010-06-16 16:02:27

-1

我想了解更多關於Python語法的細節。通常情況下,如果一段代碼看起來很奇怪,通常有更好的方法來編寫它。例如,在上例中:

bar = foo if baz else None 
while bar not biz: 
    bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 

did_i_not_warn_you_biz() 
my_father_is_avenged() 

雖然這是一個小改動,但它可能有助於可讀性。另外,坦率地說,我從來沒有使用過一個while循環,所以有一個很好的變化,你會得到一個簡潔的列表理解或循環代替。;)

0
from __future__ import braces 

需要我多說嗎? :)

認真地,PEP 8,'空白行',§4是官方的做法。