提高Python的可读性?
最近我一直很喜欢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是执行此操作的官方方法。