本期话题:Python 为什么使用缩进来划分代码块,而不像其它语言使用花括号 {} 或者 “end” 之类的语法?

Python 的缩进是一个老生常谈的话题,经常有人提及它,比如Python 之父在上个月就恰好转发过一篇文章:

因为这篇文章,Guido 还受邀在 Python Bytes 播客上录制了一期节目:

那么,Python 为什么要用缩进来划分代码块呢?

我收集梳理了几份材料,接下来将带大家一起揭晓 Python 这么做的设计原因:

缩进语法,更加优雅

缩进语法,更加清晰

使用缩进,保持一致性,避免造成误读

使用缩进,代码更紧凑,便于浏览,没有累赘

使用缩进,已足够令解释器执行,没必要使用多余的符号

强制缩进,源自古老的 ABC 语言,Guido 是这门语言的设计者之一

其思想可能出自 Don Knuth(高德纳,著名计算机科学家,经典巨著《计算机程序设计艺术》的作者),他在 1974 年提出,在当时是很时髦和前卫的思想

使用缩进,可以终结大括号放在函数名后面还是再换一行的终极争论(据说此话题能令不同派系的程序员大打出手!)

以上罗列的原因主要来源于 Python 官方文档、官方 wiki 以及 Python 之父的早期访谈。

总而言之,Python 使用缩进语法,体现了它非常优雅、清晰的设计美学,对开发者、读者以及解释器,都极为友好。

实话说,我本人非常赞许 Python 的缩进,因此才第一眼就迷上了它,如果是使用了花括号之类的语法,那 Python 就顿时黯淡,也就食之无味了!

大家如何看待 Python 的缩进语法呢?请在后台发表你的看法吧!

参考材料:

1、Guido 发的 twitter:https://twitter.com/gvanrossum/status/1249549091584892928

2、Guido 转发的关于缩进的文章:https://web.archive.org/web/20070922223915/http://www.secnetix.de/~olli/Python/block_indentation.hawk

3、Guido 作客 Python Bytes 播客节目,谈论缩进话题:https://pythonbytes.fm/episodes/show/179/guido-van-rossum-drops-in-on-python-bytes

4、播客节目的视频版:https://www.youtube.com/watch?v=PlvvVXeU0yw&feature=youtu.be

5、官方文档对缩进的解释:https://docs.python.org/3/faq/design.html#why-does-python-use-indentation-for-grouping-of-statements

6、官方早期 wiki 的解释:https://wiki.python.org/moin/Why%20separate%20sections%20by%20indentation%20instead%20of%20by%20brackets%20or%20%27end%27

python中代码块使用缩进来表示对吗_Python 为什么使用缩进来划分代码块?相关推荐

  1. 怎么把竖列中的数相加python_关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码...

    pandas是python环境下最有名的数据统计包,而DataFrame翻译为数据框,是一种数据组织方式,这篇文章主要给大家介绍了关于python中pandas.DataFrame对行与列求和及添加新 ...

  2. python中复数的实部和虚部都是浮点数_Python学习笔记:从入门到放弃(2)基本语法...

    这次主要就记录一下Python中的基本语法,有标识符,注释,行与缩进,print函数输出以及数字类型和字符串 标志符: 第一个字符必须是字母表中字母或下划线 _ . 标识符的其他的部分由字母.数字和下 ...

  3. python语言中缩进为几个空格_python每级缩进都只能使用四个空格。一个判断题,对不对?...

    展开全部 不对,python的每级缩进并不是只能使用四个空格,python的缩进规则是第一句的代码缩进是两个空格,那e68a84e8a2ad323131333532363134313032313635 ...

  4. python中的lambda函数用法--无需定义函数名的函数或子程序,避免代码充斥着大量单行函数

    匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序. lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值. 要点: lambda 函数不能包含命令 包含 ...

  5. python中每个if条件后面都要使用冒号_python 3 条件控制语句

    Python3 条件控制 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 语句 Python中if语 ...

  6. python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...

    点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...

  7. 在python中、如果异常并未被处理或捕捉_python异常处理(一)

    Python的异常处理能力是很强大的,可向用户准确反馈出错信息.在Python中,异常也是对象,可对它进行操作.所有异常都是基类Exception的成员.所有异常都从基类Exception继承,而且都 ...

  8. python中try和except语句语言导入包吗_Python异常处理中try与except用法的案例

    Python异常处理中try与except用法的案例 发布时间:2020-11-03 09:44:36 来源:亿速云 阅读:85 作者:小新 小编给大家分享一下Python异常处理中try与excep ...

  9. python中的单下划线和双下划线_python中的单下划线和双下划线

    1. _ 的含义在python的类中,没有真正的私有化,不管是方法还是属性,为了编程的需要,约定加了下划线 _ 的属性和方法不属于API,不应该在类的外面访问,也不会被from M import * ...

最新文章

  1. centos6.5 rsync+inotify同步配置笔记
  2. Spring Boot 中如何实现 HTTP 认证?
  3. BIO,NIO,AIO总结(二)
  4. linux无法访问443端口,linux – 为什么我无法在Ubuntu上ping端口443?
  5. vim 设置标签等操作
  6. 信息学奥赛C++语言:输出判断
  7. SAP MM ME51N 创建采购申请单据时候永远取物料主数据基本计量单位
  8. HTTP 如何传输大文件
  9. .net开发中用BackgroundWorker实现多线程
  10. AcWing 2058. 笨拙的手指(暴力枚举)
  11. 四大顶级开源网络管理工具详解
  12. opencv外接矩形矫正
  13. NMEA 0183 校验计算方法
  14. Android 渠道游戏 - 聚合SDK
  15. 卡贴机变无锁教程_卡贴机怎么解锁变无锁
  16. golang mongodb驱动mgo异常崩溃问题
  17. 王雪松等:驾驶行为与驾驶风险国际研究进展
  18. 知己知彼才能成功拿下职场offer!
  19. JSD2212班第二次串讲-面向对象阶段
  20. 乐乐音乐H5网页版-支持krc歌词(动感歌词、翻译和音译歌词)

热门文章

  1. idea 关于2020maven home directory的路径
  2. idea社区版下载lombok或是导入lombok.jar包
  3. WORD如何设置第X页,共Y页页码设置?
  4. python rename dataframe,python rename dataframe_python – 重命名Pandas DataFra
  5. servlet 接收request发送过来的多维数组_049 JAVA-Servlet
  6. sublime开发php插件下载,SublimeText3 配置PHP开发插件
  7. 计算机专业本科毕业转行会计,大学里就业最难的5个专业,毕业后难找工作,很多同学都转行了!...
  8. 骑士聚会问题(PPT截取)
  9. 【论文阅读】基于未知传播模型的信息源检测问题 2017年AAAI国际先进人工智能协会
  10. php安装包解压后,ps下载后怎么解压安装