4

最近我真的很喜欢 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()

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

4

7 回答 7

24

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

于 2008-09-09T14:58:52.277 回答
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()
于 2008-09-09T10:33:05.457 回答
8

您可以尝试增加缩进大小,但总的来说,我只想说,放松,它会随着时间的推移而出现。我不认为试图让 Python 看起来像 C 是一个很好的主意。

于 2008-09-09T10:08:28.183 回答
7

与其专注于使现有结构更具可读性,不如专注于构建更具逻辑性的结构。制作更小的块,尽量不要过度嵌套块,制作更小的函数,并尝试更多地思考你的代码流。

如果您无法快速确定代码的结构,您可能应该考虑重构并添加一些注释。代码流应该总是立即显现出来——你想得越多,你的代码就越难维护。

于 2008-09-09T10:43:27.803 回答
3

也许最好的办法是在您的编辑器中打开“显示空白”。然后你会看到每行标签的距离(通常是一堆点),当它发生变化时会更加明显。

于 2008-09-09T10:24:46.787 回答
0
from __future__ import braces

需要我多说?:)

说真的,PEP 8 'Blank lines', §4 是官方的做法。

于 2010-06-16T15:40:49.153 回答
-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 循环,所以有一个很好的改变,你最终会得到一个简洁的列表理解或 for 循环。;)

于 2008-09-09T15:09:04.137 回答