2008-09-09 84 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是官方的做法。