提高Python的可读性?

时间:2008-09-09 10:05:37

标签: python readability

我最近一直很喜欢Python编程。我来自对C语言编码的强烈热爱的背景,其中一切都可能比它应该更复杂(但至少把头发放在胸前)。因此,对于那些不需要大量速度的更复杂的事情,从C切换到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()

问题发生在if if的结尾:所有的标签然后突然回到一个震动的块感觉几乎令人不安。作为一个解决方案,我开始编写我的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()

由于一些奇怪的原因,这让我更能够阅读自己的代码。但我很好奇:还有其他人遇到我的奇怪问题,找到了更简单的方法来使他们的标签代码更具可读性吗?在我成为一个巨大的习惯之前,我很想知道是否有更好的方法可以做到这一点。

7 个答案:

答案 0 :(得分:23)

学习新编程语言的一部分是学习用该语言阅读代码。像这样的拐杖可以让你更容易阅读自己的代码,但它会妨碍学习如何阅读其他人的Python代码的过程。我真的认为你最好摆脱块注释的结束并习惯普通的Python。

答案 1 :(得分: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()

答案 2 :(得分:8)

你可以尝试增加缩进大小,但总的来说我会说,放松,它会随着时间而来。我不认为尝试使Python看起来像C是一个非常好的主意。

答案 3 :(得分:7)

您应该专注于制作更多逻辑结构,而不是专注于使现有结构更具可读性。制作较小的块,尽量不要过度嵌套块,制作更小的函数,并尝试更多地考虑代码流。

如果您无法快速确定代码的结构,则应考虑重构并添加一些注释。代码流应始终是显而易见的 - 您需要考虑的越多,代码的可维护性就越低。

答案 4 :(得分:3)

也许最好的办法就是在编辑器中打开“显示空白”。然后你会看到每条线的标签有多远(通常是一堆点),当变化时会更明显。

答案 5 :(得分:0)

from __future__ import braces

需要我说更多吗? :)

说真的,PEP 8,'空行',§4是正式的做法。

答案 6 :(得分:-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循环,因此有一个很好的改变,你最终会得到一个简洁的列表理解或循环。 ;)