共计 1907 个字符,预计需要花费 5 分钟才能阅读完成。
对于编程语言中的正文,其重要性基本上已为大家所共识。
然而对于正文的标准,这个话题就像咱们之前聊过的缩进、终止符和命名形式一样,众口难调。
正文符通常可分为两种,即行正文与块正文(inline/block),它们在不同的编程语言中的符号堪称让人目迷五色。
比方行正文符,它至多有以下的 17 种之多(出自维基百科 )):
其中两个最大的营垒别离是“//”与“#”号:
- // 正文符:ActionScript, C (C99), C++, C#, D, F#, Go, Java, JavaScript, Kotlin, Object Pascal (Delphi), Objective-C, PHP, Rust, Scala, SASS, Swift, Xojo
- # 正文符:Bourne shell and other UNIX shells, Cobra, Perl, Python, Ruby, Seed7, Windows PowerShell, PHP, R, Make, Maple, Elixir, Nim
那么,Python 为什么用“#”号作正文符,而不是“//”呢?
这个问题恐怕没方法从解析的效率、符号的辨识度和输出的便利性等方面答复,因为它们基本上没有区别。
我没有找到官网的解释,然而从这些正文符的营垒中,曾经不难得出一个较为正当的解释:
- // 正文符基本上被 C 语言家族所用
- # 正文符则基本上是被 Shell 和其它脚本语言所用
Python 在发明之初,从 C 和 Shell 语言中借鉴了不少货色,但它是一种脚本语言,因而在正文符这个最为根底的语言因素上,就偏差了脚本语言的传统。
在某些“类脚本语言”中,比方 yaml、conf 和 ini 等格局的配置文件,它们大多也是采纳脚本语言的“#”号作为正文符。
所以,Python 行内正文符的抉择,大略能够归结为一种历史起因,即借鉴了 Shell 脚本语言的写法。
相比于行正文符的多样,块正文符更加是让人目迷五色:
大多数写法是我从未见过的,有些甚至是难以忍受的,槽点太多!
在这份表格里,咱们看不到 Python,因为从严格意义上讲,Python 并没有块正文符!
一般而言,咱们在间断的每行内容后面加“#”号,达到块正文的成果。块正文被看作是多个行正文。
PEP-8 中是这么倡议的:
Each line of a block comment starts with a
#
and a single space (unless it is indented text inside the comment).
有人曾在 Twitter 上提问,为什么 Python 没有块正文符?
Guido 回复称,能够将多行字符串用作块正文:
Python 的多行字符串用三对单引号或双引号示意,它还能够用作文档字符串(即 Documentation Strings,简写 docstrings)。
然而,将它当做多行正文符应用,在语义上则有点怪怪的——它示意的是一段字符串,尽管没有赋值给变量,不会生成代码,然而它并非语义上的正文。
因为脚本语言的个性,它容许咱们写一段“无根的字符串”,在语法上没有问题,也没有负作用(negative effects),然而,如果把它作为正文应用,这就是一种副作用(side effects)了。
从这点上思考,我尽管不拥护有人把多行字符串写法用作块正文,然而我会更举荐大家应用“#”号作正文。
另外,对于无用的代码,最好的做法就是间接删除,如果后续发现有须要,再回退批改。具体的多行正文尽量放在文档字符串中,这样在外围代码中就会很少呈现多行正文的状况了。
对于 Python 的正文符用法,大家是怎么想的呢?欢送留言交换。
如果你感觉本文剖析得不错,那你应该会喜爱这些文章:
1、Python 为什么应用缩进来划分代码块?
2、Python 的缩进是不是反人类的设计?
3、Python 为什么不必分号作语句终止符?
4、Python 为什么没有 main 函数?为什么我不举荐写 main 函数?
5、Python 为什么举荐蛇形命名法?
6、Python 为什么不反对 i++ 自增语法,不提供 ++ 操作符?
7、Python 为什么只需一条语句“a,b=b,a”,就能间接替换两个变量?
写在最初:本文属于“Python 为什么”系列(Python 猫出品),该系列次要关注 Python 的语法、设计和倒退等话题,以一个个“为什么”式的问题为切入点,试着展示 Python 的迷人魅力。若你有其它感兴趣的话题,欢送填在《Python 的十万个为什么?》里的考察问卷中。局部话题会推出视频版,请在 B 站收看,观看地址:视频地址
公众号【Python 猫 】,本号连载优质的系列文章,有 Python 为什么系列、喵星哲学猫系列、Python 进阶系列、好书举荐系列、技术写作、优质英文举荐与翻译等等,欢送关注哦。