关于编程语言中的注释,其重要性基本上已为大家所共识。

然而关于注释的规范,这个话题就像我们之前聊过的缩进、终止符和命名方式一样,众口难调。

注释符通常可分为两种,即行注释与块注释(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 的注释符用法,大家是怎么想的呢?欢迎留言交流。

如果你觉得本文分析得不错,那你应该会喜欢这些文章:

写在最后:本文属于“Python为什么”系列(Python猫出品),该系列主要关注 Python 的语法、设计和发展等话题,以一个个“为什么”式的问题为切入点,试着展现 Python 的迷人魅力。若你有其它感兴趣的话题,欢迎填在《Python的十万个为什么? 》里的调查问卷中。部分话题会推出视频版,请在 B 站收看,观看地址:视频地址

公众号【Python猫】, 本号连载优质的系列文章,有Python为什么系列、喵星哲学猫系列、Python进阶系列、好书推荐系列、技术写作、优质英文推荐与翻译等等,欢迎关注哦。

python语言的注释语句引导符_Python 为什么用 # 号作注释符?相关推荐

  1. python为什么用号做注释符_Python 为什么用 # 号作注释符?

    关于编程语言中的注释,其重要性基本上已为大家所共识. 然而关于注释的规范,这个话题就像我们之前聊过的缩进.终止符和命名方式一样,众口难调. 注释符通常可分为两种,即行注释与块注释(inline/blo ...

  2. python为什么用号做注释符_Python为什么用#号作注释符?

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 关于编程语言中的注释,其重要性基本上已为大家所共识. 很多人学习py ...

  3. Python 为什么用 # 号作注释符?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:豌豆花下猫 来源:Python猫 关于编程语言中的注释,其重 ...

  4. python多行注释符号_涨知识Python 为什么用 # 号作注释符?

    - START -关于编程语言中的注释,其重要性基本上已为大家所共识.然而关于注释的规范,这个话题就像我们之前聊过的缩进.终止符和命名方式一样,众口难调.注释符通常可分为两种,即行注释与块注释(inl ...

  5. python的注释符严格说来只有一种,Python 为什么用 # 号作注释符?

    关于编程语言中的注释,其重要性基本上已为大家所共识. 然而关于注释的规范,这个话题就像我们之前聊过的缩进.终止符和命名方式一样,众口难调. 注释符通常可分为两种,即行注释与块注释(inline/blo ...

  6. python语言的注释语句引导符不包括什么_以下选项中,哪一个是Python语言中代码注释使用的符号?________...

    [单选题]关于 Python 语句 P = –P,以下选项中描述正确的是________ [多选题]Python的数字类型包括( ) [多选题]Python中的注释符有哪几种?( ) [判断题]已知 ...

  7. python中使用什么注释语句和运算_Python基础知识

    本文标识 :Python_1 本文编辑 : Jack 风 编程工具 : Anaconda.Pycharm 阅读时长 : 12分钟 Python基础学习为什么那么多培训机构?那么多的程序员呢? 很简单啊 ...

  8. python语句分号_python 为什么不用分号作终止符?

    python语言中包含各种符号,我们平常使用python写代码的时候一定要注意,必须要弄明白每种符号所代表的含义以及相应的使用方法.分号";"就是python中常见的一种符号,大家 ...

  9. python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...

    一:前言 Python 里面的 with 语句是被认为是晦涩难懂的特征之一,但是当你窥视它的内部你就会发现这里面并没有什么魔法.事实上它可以帮助我们写一些整洁和可读性高的代码. 那么 with 语句适 ...

最新文章

  1. 【Ubuntu】Ubuntu14.04添加163的源
  2. Windows下使用IDEA+Maven搭建本地Hadoop环境
  3. [渝粤教育] 广东-国家-开放大学 21秋期末考试Java程序设计基础10232k2
  4. 背景图片hover加蒙层_css3实现图片遮罩效果鼠标hover以后出现文字
  5. php怎么创建两条折线图,excel折线图怎么做两条
  6. linux新建用户切换后显示-bash-4.1$(转载)
  7. 为什么不要随便点击下载链接:过时的远程病毒灰鸽子木马示范
  8. Windows命令行调用windows 图片和传真查看器等
  9. TB,PB, Eb, Zb, YB
  10. douban movie top of Web Crawler
  11. 小巧的menuetOS
  12. Bugku CRYPTO No Ciphertext RSA writeup by 树木
  13. ubuntu显卡的参数说明
  14. 江南,我愿变成你怀中的一枝青莲
  15. 985院校计算机保研er如何冲刺清北?
  16. Simpsons’ Hidden Talents(辛普森一家的隐藏天赋 )(kmp经典模板题) HDU - 2594
  17. 两台计算机如何连接成网络错误,常见网络(连接)错误的解决方法
  18. iOS开发 国际化/多语言适配
  19. MT4错误代码最完整汇总
  20. Google SEO官方《搜索引擎优化指南》(6): 写好锚文本

热门文章

  1. 嵌入式基础认识1:存储器(如RAM、ROM和FLASH)
  2. 将python代码编译成.so文件
  3. 常用的匹配正则表达式
  4. Linux io内存存在的意义~
  5. 第4章 原子操作 第二节
  6. opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法
  7. nedc工况_东南DX3 EV续航升级 NEDC综合工况续航451公里
  8. python 交互式可视化库_Python 交互式可视化库
  9. 【Pytorch神经网络理论篇】 12 卷积神经网络实现+卷积计算的图解
  10. 【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU