济宁计算机网站建设培训班,大连 做 企业网站,免费软件下载网址,现在最火的推广平台有哪些前些天#xff0c;我写了《Python为什么使用缩进来划分代码块#xff1f;》#xff0c;文中详细梳理了 Python 采用缩进语法的 8 大原因。我极其喜欢这种简洁优雅的风格#xff0c;所以对它赞美有加。然而文章发出去后#xff0c;非常意外#xff0c;竟收到了大量的反对意…前些天我写了《Python为什么使用缩进来划分代码块》文中详细梳理了 Python 采用缩进语法的 8 大原因。我极其喜欢这种简洁优雅的风格所以对它赞美有加。然而文章发出去后非常意外竟收到了大量的反对意见(以往文章的互动不多此次创下了记录)我就不截图了先摘录几则最刺眼的评论 最大的缺陷就是这个缩进机制 去掉花括号是最愚蠢的设计 绝对是过度设计了缺陷很大 最大的缺点就是缩进太反人类了 ……对于这一类的评论我认为他们是“睁着眼睛说瞎话”颠倒是非黑白。Python 的缩进语法如此简洁好用怎么就“过度设计/愚蠢/缺陷/反人类”了常言道众口难调有人爱甜粽子有人爱咸粽子但是对于咸甜味道大家是有所共识的不至于感官紊乱大放厥词。还有比较多的评论认为缩进容易造成混乱 代码多了自己看着累别人更难懂 眼花了还是括号好些 还是{}或end更清晰 没有花括号老觉得没有安全感 缩进层次看不清楚 没有大括号不便于阅读 层次一多看起来很乱不知哪层是哪层要缩多少。到底退出循环没有。 看着明明缩进是对的但运行时总是报错 用python写上十万行试试到时候你就知道什么叫混乱看不下去 ……现在主流的 IDE 工具都很强大应该善于使用其基本功能例如设置显示空格字符、设置 tab 自动转化为空格、设置 tab 键为 4 个空格……同一层级的缩进还会有浅浅的竖线在视觉上辅助阅读。至于说层次过多、代码很长的情况这本身就是一种代码坏味道当出现过长的函数或者类时优秀的程序员 第一时间该考虑的就是重构。推荐一本书《重构改善既有代码的设计》里面有正道的价值观和详尽的方法论。还有说点击右括号可以看到匹配的左括号会清晰。有这东西确实不错但没有我并不诉求。本身紧凑简洁的代码缩进阅读会很快。除了以上两大类的评论我还收到以下几种比较有代表性的评论有人说“取消花括号会大大降低运行速度”、“这个特性鲁棒性太低了”。——这纯粹是臆想让他们给出论证和例子无果。别以为在哪里看到有人说 Python 慢就想当然把锅扣到缩进的头上。有人说“多人协同编辑时有人用tab有人用空格”。——我说开发团队应该统一规范然后用 autopep8 之类的辅助工具。他说规范要不停花精力维护要花成本。拜托这年头还有人不重视代码规范直接开除“猿籍”。有人说“缩进没办法自动格式化代码”。——这在复制移动代码或者要改变代码层级时有此诉求。我一直用比较笨的方法调节(tab、shifttab、加减空格)确实是比较笨但是会比较有把握。刚在 PyCharm 里研究了一下我发现它是支持自动格式化的只是有个小小的问题要注意关于缩进的自动格式化这里有两个例子给大家演示一下上述例子删除掉那行 if 条件语句然后直接”ctrlaltl“作全局格式化格式会出错。我们希望两句 print 向左缩进 4 格但是 return 那句也会向左缩进。在删除 if 那行后如果我们只选中两行 print作局部”ctrlaltl“格式化那只有这两行会缩进就没问题。再看第二个例子我们复制了一段新代码但是它的缩进不对这时候若直接“ctrlaltl”全局格式化或者选中那三行再格式化结果都不对原因是第二个 if 的缩进格数小于 4 个所以 PyCharm 认为它属于一级缩进(即不该有空格)所以自动格式化时就把它左移了。如果选中它们先按 tab 键右移(即新代码变成缩进大于 4 格小于 8 格)此时再作格式化的话它们的缩进就跟第一层的 if 一致了(两层 if 是兄弟关系)。同理如果你想把新代码缩进到第一层 if 的内部(变为父子关系)那只需选中上图三行代码再 tab 键右移 4 格之后格式化就可以了建议大家在编辑器里实操一下。等空了我会录制一期小视频(B 站搜“Python猫”)敬请留意。除了上面的评论/观点之外我们在微信交流群里也讨论了这个话题。樱雨楼(https://github.com/yingyulou) 小姐姐的观点对我挺有启发。缩进使得代码失去了形式语言里所谓的“上下文无关文法”从而使得空格数量的组合变得不再是可有可无的。block 作为一个“语法组分”需要一个定界符而空格一般不作为语法组分所以就觉得少了些什么。三言两语没法转述清楚但她谈论缩进话题的视角确实令人耳目一新上次的文章发出后有不少小伙伴表示很喜欢 Python 的缩进。我本以为会听到很多这类的声音没想到却是负面的评论更多。(也许更多认同的声音没有表现出来)本文对几类典型的评论作出了回应再次表达了我在这个话题上的关注和理解(以及情绪的抒发)希望也能给读者们带来一些思考和收获吧。