首页 > 编程语言 >Python 缩进:有那么糟糕吗?

Python 缩进:有那么糟糕吗?

时间:2022-09-30 17:57:51浏览次数:86  
标签:缩进 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

标签:缩进,Python,代码,自由,使用,糟糕,大括号
From: https://www.cnblogs.com/amboke/p/16745706.html

相关文章

  • Python 时间转化
    1、字符串转datetimefromdatetimeimportdatetime,timedeltatime_a=datetime.strptime('2022-09-0320:31:10',"%Y-%m-%d%H:%M:%S")2、datetime转字符串str_......
  • 使用 Python 分析财务报表
    使用Python分析财务报表首先,什么是财务报表?财务报表是传达有关公司当前业务活动及其过去和现在财务业绩的信息的书面记录。分析财务报表、公司的资产负债表、损益表或......
  • Python dataframe 处理记录
    1、分组求和importpandasaspdfromdatetimeimportdatetime,timedeltadata=pd.DataFrame({"company":["A","A","A","A","A","A","A","A","A......
  • 使用 Python 进行超参数调优:第 2 部分
    使用Python进行超参数调优:第2部分执行部分!Photoby安德里克·兰菲尔德on不飞溅在里面第一部分在本系列博文中,我们讨论了很多与您在进行超参数调优实验之前......
  • Python基础8
    今日内容概要字典相关操作元祖相关操作集合相关操作字符编码(理论)今日内容详细字典相关操作类型转换#格式dict(其他数据类型)字典的转换一般不使用......
  • python从入门到报废学习线路规划
    计算机基础计算机基础之编程计算机组成原理计算机操作系统编程语言分类Python解释器和集成环境-解释器:3.10-pycharm,vscode-配置清华源:第三方模块,国外Python基......
  • Python制作自动答题脚本,100%准确率,1秒10题提高效率
    前言环境使用Python3.8Pycharm模块使用importrequests—>数据请求模块pipinstallrequestsimportparsel—>数据解析模块pipinstallparselfr......
  • python exe打包后无法执行定时任务(apscheduler框架)
    问题:在代码中使用了apscheduler框架,importtzlocalscheduler=BackgroundScheduler(executors=executors,job_defaults=job_defaults,timezone=str(tzlocal.get_local......
  • Python学习(二)PyCharm安装
    一、网站​​https://www.jetbrains.com/pycharm/​​二、PyCharm安装一种PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),带有一整套可以帮助用户在使用Python......
  • python sklearn 模型的保存与读取
    下载保存模块pipinstalljoblib导入模块import joblib保存模型joblib.dump(model,"model.joblib",compress=1)读取模型#加载模型文件,生成模型对象new_model=......