2014-02-20 39 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)。如果它比这更长,你应该把它分开。

不要对此抱有信心,但如果坚持这一点,它确实会导致非常干净,清晰的代码库。