提高Python的可读性?

时间:2020-03-05 18:49:56  来源:igfitidea点击:

最近我一直很喜欢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块的末尾:所有的制表符,然后突然返回到震撼的块,几乎感到不安。作为解决方案,我已经开始像这样对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()

出于某种奇怪的原因,这使我更能够阅读自己的代码。但是我很好奇:是否有其他人遇到我的奇怪问题,找到了更轻松的方法来使他们的分页式代码更具可读性?我很想在这成为我的习惯之前,找出是否有更好的方法可以做到这一点。

解决方案

回答

我们可以尝试增加缩进大小,但总的来说,我只是说放松一下,随着时间的流逝。我认为尝试使Python看起来像C并不是一个好主意。

回答

也许最好的办法是在编辑器中打开"显示空白"。然后,我们将直观地看到每行被制表符的距离(通常是一堆点),并且当改变时将更加明显。

回答

我喜欢在块周围放置空白行,以使控制流更加明显。例如:

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代码的过程。我真的认为我们最好摆脱块注释的结尾并习惯于普通的Python。

回答

我将寻求了解有关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循环,所以有一个很好的改变,我们将得到一个简洁的列表理解或者for循环。 ;)

回答

from __future__ import braces

需要我多说? :)

认真地说,PEP 8,"空白行" 4是执行此操作的官方方法。