Python 缩进:有那么糟糕吗?

Python 缩进:有那么糟糕吗?

它是否使 Python 的语法变得困难并且容易出错?

Lego blocks in a huge mess, making the picture full of visual clutter.

With or without indentation, as in visual order or visual clutter? Photo by 里克·梅森 on 不飞溅

许多批评 Python 的作者,甚至在 Medium 上,都指出 Python 的最大问题之一是其严格的缩进规则。让我们考虑一下是否确实如此。

Python 确实要求您实现特定的缩进样式,并且对此非常严格。如果你不这样做,你就有可能得到 缩进错误 或者,更糟糕的是,代码不正确。批评者喜欢列出其他语言,如 Java、C# 或 R,它们可以让你随意缩进代码,他们强调他们多么怀念 Python 中的这种自由。

缩进自由会带来更好的 Python 代码吗?缩进真的有那么糟糕吗?你真的怀念那种缩进自由吗?为了回答这些问题,让我们来看一些例子。

例子

考虑以下代码:

它是应用程序模型的代码,而不是实际应用程序的代码,但这并不重要。我不要求您详细阅读代码。相反,只看它并注意缩进和大括号的使用。注意你是否喜欢语法的风格。

是的,它是 Python!但它是一个不同的 Python;来自另一个世界的 Python;一个给你缩进自由的 Python —— 以你想要的方式缩进,这很好。但当然,我们不能简单地放弃缩进。我们需要其他东西来组织代码。因此,上面的代码使用了大括号。这个解决方案似乎是个好主意。这些不使用缩进的其他语言使用大括号,因此我们的 please-remove-indentation-from-Python Python 也使用它们。

当然,这并不意味着您不能在我们的新 Python 中使用缩进。做你想做的!您想使用常规的 Python 缩进样式吗?去做吧。你想打破它的流动吗?去做吧。做任何你想做的事,但在这样做时,不要忘记使用大括号。压痕自由,我们来了!

我们可以使用该功能真是一种解脱 字典() 而不是字典文字, {} ,或字典/集合理解!我不确定解析将大括号用于字典和集合的 Python 代码是否容易 作为缩进替代品。幸运的是,对我们来说没有问题。如果有人决定实际实现这个新的 Python,让其他人担心吧。

既然我们是自由的,我们可以使用不同的风格。这是它的样子:

这是常规的 Python 操作:

最后一个代码有效,您可以检查它。当然,该应用程序不适合真实模型,只是一些人造模型。

你怎么看?你喜欢大括号 Python 提供的自由吗?还是您更喜欢带有缩进的优秀 Python?

我的缩进故事

当我来到 Python 时,我已经使用 R 大约 16 年了。十六年!十六年的自由和大括号!我是自由的。没有人让我使用空格或制表符,我可以使用制表符和空格以及任何我想要的东西——甚至什么都不用,只是花括号。

那么,为什么我决定用 Python 的严格规则来代替这种自由呢?

原因有很多,但其中一个重要的原因就是我所说的 Python 的语法卫生。确实,这是我首先想到的关于 Python 语法的事情之一,也就是缩进。你必须在 Python 中使用缩进,它使代码更干净!干净利落。

对,就是这样。经过 16 年的大括号和这么多不同风格的使用,我认为 Python 的缩进是卫生的。这意味着语法是干净的;代码清晰易读;并且额外的空白令人耳目一新,使代码在视觉上不那么混乱,因此更干净。

您不必同意我的观点,但是当我查看上面的三个代码片段时,我绝对认为常规 Python 是最好的。很卫生。很明显。而另外两个片段,用 Python 中的 please-remove-indentation-from-Python 编写,让我很紧张。我不称这种缩进为自由;我称之为缩进无政府状态。做任何你想做的事,只要你记住正确使用大括号就可以了。不,这对我不起作用。我不想在 Python 代码中看到缩进混乱;我想在 Python 代码中看到卫生!请保持 Python 的卫生!

结论

缩进有什么问题?我听说这很糟糕,因为复制代码有时会很困难。真的吗?在过去的四年里,当我复制粘贴代码时,我从未想过这是一个真正的问题。臭名昭著的 缩进错误 ?啊,是的,我记得,我有时会在交互式会话中的代码前放一个空格,足以删除空格,一切都很好。

我还听说缩进很糟糕,因为开发人员可以混合制表符和空格。但是为什么会有人混合它们呢?但是,团队合作可能会导致此类问题。但无论你在团队中使用哪种语言,你都应该创建一个风格指南,并且所有人都应该遵循它。仅此一项就足以解决这个特殊的缩进问题。或者,您可以简单地使用[ 黑色的](https://github.com/psf/black) 或类似的工具。

坦率地说,我不理解这种对缩进的厌恶。对我来说,这是一件很棒的事情。它使 Python 代码如此卫生、如此干净、如此清晰。额外的空白使代码不那么杂乱,更有条理。而且我确实记得当我使用 R 的花括号时我不得不努力解决的问题。没有卫生,没有秩序,只有一团糟,除非一个团队选择了一种特定的风格并遵循它,但是所有那些花括号都关闭了 如果 -blocks、loops、functions等等……非常感谢!我更喜欢四个空格。

让我重复一遍,我理解并接受您可以有不同的意见。你选择讨厌 Python 的缩进,我很好。但是,求求您, 不要因为缩进就说 Python 不是最好的编程语言

“需要注意的是,缩进在 Python 中不是可选的。这在使用条件时会造成问题。此外,缩进让我们很难看出函数在哪里结束。”

真的吗?

我认为是时候给缩进一些功劳了。我认为 Python 代码的简单性来自多种原因,其中之一无非就是缩进本身。

谢谢你和我一起度过这段时间。我很高兴了解您对这个令人惊讶的争议话题的看法,因此请在评论中分享您的想法。

你觉得 Python 的缩进风格是有利还是不利?

你认为如果没有它,Python 会做得更好,而是使用大括号吗?或者,也许,您对解决 Python 缩进问题有更好的想法?

也许,你同意我的观点,缩进是 Python 的优势、强大的力量,以及是什么让它的代码卫生?

资源

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/40072/45043017

posted @ 2022-09-30 17:45  哈哈哈来了啊啊啊  阅读(135)  评论(0编辑  收藏  举报