首页 > 编程语言 >Python 为什么不用分号作终止符?

Python 为什么不用分号作终止符?

时间:2022-10-14 13:36:02浏览次数:78  
标签:语句 分号 Python 终止符 换行 分隔符

一般而言,编程语言中使用分号“;”来实现两种目的:

  1. 作为语句分隔符:使用分号来分隔语句(statement),这样就能在一行代码中书写多条语句(一行多句)
  2. 作为语句终止符:使用分号来终止语句,这样就能把多行代码识别为一条语句(一句多行)

Python 为什么不用分号作终止符?_分隔符

单纯看“分隔符”与“终止符”,它们都是必须的,然而是否都要用分号来表示呢?这个问题没有达成一致的标准。

Python 中使用了分号作为语句分隔符,但是不用分号作为终止符, 而是用了换行作为终止符。

Python 为什么不用分号作终止符?_python_02

若在一句完整的语句末尾加了分号,然后换行,那么 IDE 一般会提示“Trailing semicolon in the statement”,提示着这个“尾随分号”是多余的。

按我粗浅的理解,尾随分号实际会被当成分隔符,只不过它后面是“空语句”,然后是换行(即终止符)。分隔空语句是无必要的,所以尾随分号就成了多余的。

Python 为什么不用分号作终止符?_ico_03

Python 不用分号作为终止符,大概有如下的原因:

  1. 它把缩进和换行当成文法的有效部分,可以表达出完整的语义,不会导致编译时的歧义。这是最主要的原因,是跟“分号党”的根本区别
  2. 不用分号与花括号,但是使用缩进和冒号,这是一脉相承的思路,总体上形成了更高的可读性、简洁性和标准化。这体现了局部语法与整体规则的关系,1 + 1 > 2
  3. 可以少写字符,也避免了在某些键盘上要敲“shift”键的麻烦
  4. 分号主要是给机器看的,但 Python 更注重于人性化。早期硬件有所限制,加分号可以提升解析/编译的速度,但如今障碍已除,某些分号党语言只是在延续 B/C 语言的老传统
  5. 对于需要换行的语句,Python 中使用反斜杠(\)来连接,可以理解成它把换行给转义了,能够解决一句多行的问题

Python 为什么不用分号作终止符?_python_04

关联阅读

1、​​A Brief History of the Semicolon in Programming​

2、​​The End of the Semicolon Era​

写在最后

本文属于“Python为什么”系列文章(Python猫出品),该系列主要关注 Python 的语法、设计和发展等话题,以一个个“为什么”式的问题为切入点,试着展现 Python 的迷人魅力。更多详情:​​视频地址​



标签:语句,分号,Python,终止符,换行,分隔符
From: https://blog.51cto.com/u_14244765/5756340

相关文章

  • Python小技巧:如何批量更新已安装的库?
    众所周知,升级某个库(假设为xxx),可以用​​pipinstall--upgradexxx​​​命令,或者简写成​​pipinstall-Uxxx​​。如果有多个库,可以依次写在xxx后面,以空格间隔。那......
  • 一篇文章掌握 Python 内置 zip() 的全部内容
    一篇文章掌握Python内置zip()的全部内容zip()是Python中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来。......
  • Python 之父爆料:明年至少令 Python 提速 1 倍!
    大概在半年前,我偶然看到一篇文章,有人提出了给Python提速5倍的计划,并在寻找经费赞助。当时并没有在意,此后也没有看到这方面的消息。但是,就在5月13日“2021年Python......
  • Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?
    本文出自“Python为什么”系列,请查看​​全部文章​​在日常使用Python时,我们经常需要创建一个列表,相信大家都很熟练了吧?#方法一:使用成对的方括号语法list_a=[]#方法......
  • Python最会变魔术的魔术方法,我觉得是它!
    在​​上篇文章中​​,我有一个核心的发现:Python内置类型的特殊方法(含魔术方法与其它方法)由C语言独立实现,在Python层面不存在调用关系。但是,文中也提到了一个例外:一个非......
  • Python 中的数字到底是什么?
    花下猫语:在Python中,不同类型的数字可以直接做算术运算,并不需要作显式的类型转换。但是,它的“隐式类型转换”可能跟其它语言不同,因为Python中的数字是一种特殊的对象,派生......
  • Python 为什么要有 pass 语句?
    本文出自“Python为什么”系列,请查看​​全部文章​​关于Python中的​​pass​​语句,它似乎很简单(只有4个字母),即使是没有任何编程经验的初学者也能很快地掌握它的用法......
  • Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
    从接触Python时起,我就觉得Python的元组解包(unpacking)挺有意思,非常简洁好用。最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值:>>>x,y=1,2>>>print(......
  • PyCharm 2022.2 发布了,支持最新 Python 3.11 和 PyScript 框架!
    翻译:Python猫原文:​​https://blog.jetbrains.com/pycharm/2022/07/2022-2​​通常而言,使用新潮的或者快速发展的技术,可能会挺有挑战性,你可能得经常阅读文档,才能熟悉新的语......
  • Python 的切片为什么不会索引越界?
    切片(slice)是Python中一种很有特色的特性,在正式开始之前,我们先来复习一下关于切片的知识吧。切片主要用于序列对象中,按照索引区间截取出一段索引的内容。切片的书写形式:[i......