2014-02-20 56 views
0

我是一位PHP開發人員......這正是我從開發Web服務的需求中汲取的。因爲比我發現需要開始使用python的各種項目。讓我感到憤怒的第一件事之一就是對「正確」縮進代碼的癡迷。現在我瞭解它的目的。然而,我發現的是,在我的代碼塊中不使用{ }往往會導致我一段時間的wtf。從php到python - 無花括號處理

正因爲如此,我覺得自己做的東西像

if a is not None: 
    for x in a: 
     print x 
    # endfor 
# endif 

這似乎有助於我保持我的代碼,以便和視我可以看到什麼在範圍上環和控制語句。

那麼在那裏有一些其他人在那裏做什麼來自{;的土地?或者我是這個問題唯一的瘋子?

+2

如果你絕對必須使用大括號,你可以使用'from __future__導入大括號' – IanAuld

+2

我通常傾向於使用在縮進之間顯示垂直線的編輯器,這樣我就可以邏輯地看到塊的末尾在哪裏出現。 – dckuehn

+0

@dckuehn我喜歡垂直線的想法。只需要看看這是否會在日食中工作。我假設類似於np ++? –

回答

0

1)

from __future__ import braces

蟒蛇會嚇嚇你,如果你做

>>> from __future__ import braces 
SyntaxError: not a chance 

以下基本Python是沒有告訴你,因爲巨蟒沒有編碼爲PHP和JavaScript像語法

及其編碼的告訴你沒有

到Python程序員/開發者其視爲一個內部笑話,但它的殘酷告訴別人這樣做,當他們被要求幫助

2) (如果你使用python 2.7.5或者比你年紀大些)

for python 3。X你的代碼被打破,因爲它會返回一個語法錯誤

>>> a = "hsfjsdhfjdhfdhfdhf" 
>>> if a is not None: 
     for x in a: 
       print x 

SyntaxError: invalid syntax 

你忘了()

它應該是這樣的

>>> a = "hsfjsdhfjdhfdhfdhf" 
>>> if a is not None: 
     for x in a: 
       print(x) 

h 
s 
f 
j 
s 
d 
h 
f 
j 
d 
h 
f 
d 
h 
f 
d 
h 
f 

{}是Python中的字典,自Python有嚴格的語法規則,您將無法在其中包裝代碼,只有以下格式的字符串

{"lol":"omg"} 
{"lol":"omg","wow":"omg"} 
{"lol":{"wow":"omg","pfft":"lolwut"}} 
{"lol":["lol","omg","pfft","lolwut"]} 
{"lol":[["lol","omg"],["pfft","lolwut"]]} 

和許多其他方式

也可以infinetly放置字典的字典裏,只要一鍵存在的值可以是一個字典,列表,元組或字符串

例如:

{"lol":{"wow":{"omg":{"pfft":"lolwut"}}}} 

唯一的一點是

就更困難了分裂,如果你不知道該怎麼辦

3)

的一兩件事,我建議你做的就是在蟒蛇一個漂亮的大書,並開始閱讀

這是學習Python

,特別是如果你希望你的項目是好

或最好的辦法如果你想了解這個

http://learnpythonthehardway.org/

在線

啓動3210

,然後移動到這個

數據結構和算法(下面是鏈接)

http://interactivepython.org/courselib/static/pythonds/index.html

,或者你可以兩者都做它並沒有真正無論哪個命令你的,只要你學會做東西

+0

我相信print x在早期版本的python中是有效的。 – dckuehn

+0

2.7.5是唯一一個我知道這樣做不好編輯它也我不推薦使用舊版本的python在我看來是不好的做法,因爲它會導致你的代碼過時 – Belldandu

+0

我同意他應該使用新版本的python,我只是想澄清,如果他不是,你的修復導致他的印刷品出現新問題。 – dckuehn

1

你只需要適應python的精彩。如果你長時間使用用戶,需要一段時間,但最終你會喜歡它。

另外,一個空行,有時走很長的路,以提高可讀性

if a is not None: 
    for o in objects 
     for attribute in o 
      do_something_with_the_attribute(attribute) 
      do_something_with_the_attribute(attribute) 
      ... 
      still_using_the_attribute(attribute) 

     do_something_with_the_object(o) 
     other_things_using_object(o) 
     c = 2+2 
     if o.something != c: 
      print 5 

    do_something_with_a(a) 
1

的Python故意使這個困難。

爲什麼?阻止你太深嵌套邏輯堆。

如果你堅持80個字符的寬度和4個空格的縮進,那麼只要它開始有點煩人或混亂,它就是python的說法,「老兄!把這個怪物分成更小的函數,然後再增長牙齒和啃你胳膊!「。

一個經驗法則是任何函數或方法都應該能夠立即適應屏幕(包括docstring)。如果它比這更長,你應該把它分開。

不要對此抱有信心,但如果堅持這一點,它確實會導致非常乾淨,清晰的代碼庫。