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

65ebf746c8f269b33fc2b2a407bf0fd8.pngSTART -关于编程语言中的注释,其重要性基本上已为大家所共识。然而关于注释的规范,这个话题就像我们之前聊过的缩进、终止符和命名方式一样,众口难调。注释符通常可分为两种,即行注释与块注释(inline/block),它们在不同的编程语言中的符号可谓让人眼花缭乱。比如行注释符,它至少有以下的 17 种之多(出自维基百科):
05ac2f2a6eec6cb34a3878def21f1c21.png
其中两个最大的阵营分别是“//”与“#”号:
  • // 注释符: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 脚本语言的写法。相比于行注释符的多样,块注释符更加是让人眼花缭乱:
89d09e927b9252466d9677a41a4e6a80.png
1b19503da2b4b108cd78c47589ed23ab.png
大多数写法是我从未见过的,有些甚至是难以忍受的,槽点太多!在这份表格里,我们看不到 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 回复称,可以将多行字符串用作块注释:
469e92a8d1d146adacf52d35601139e3.png
Python 的多行字符串用三对单引号或双引号表示,它还可以用作文档字符串(即Documentation Strings,简写docstrings)。但是,将它当做多行注释符使用,在语义上则有点怪怪的——它表示的是一段字符串,虽然没有赋值给变量,不会生成代码,但是它并非语义上的注释。由于脚本语言的特性,它允许我们写一段“无根的字符串”,在语法上没有问题,也没有负作用(negative effects)。但是,如果把它作为注释使用,这就是一种副作用(side effects)了。从这点上考虑,我虽然不反对有人把多行字符串写法用作块注释,但是我会更推荐大家使用“#”号作注释。另外,对于无用的代码,最好的做法就是直接删除,如果后续发现有需要,再回退修改。详细的多行注释尽量放在文档字符串中,这样在核心代码中就会很少出现多行注释的情况了。对于 Python 的注释符用法,大家是怎么想的呢?欢迎留言交流。- END -
「  创造真正有价值的内容  看到最后,你有什么想要说的吗?评论区等你!点赞!在看!fe87cfb14dd56aab883858770930b384.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树层次遍历算法 python_二叉树的遍历详解:前、中、后、层次遍历(Python实现)...

二叉树的遍历详解:前、中、后、层次遍历(Python实现)二叉树是一种常见的数据结构,而它的常见遍历方法有前序遍历、中序遍历、后续遍历、层次遍历——掌握这几种遍历方法是很有必要的。假设我们二叉树节点的定义如下——# Definition for a binary tree n…

java终结器_Java的终结器仍然存在

java终结器当我第一次学习Java并从C 过渡到Java时,我记得我经常被告知,经常读到它不应该像C 析构函数那样对待Java终结器,也不应该依靠它。 该建议的频率和坚持性对我产生了影响,以至于我无法回忆起我上一次编写finalize&#xff…

Sublime Text如何安装和卸载插件

文章目录如何查找插件如何安装插件通过包控制器安装插件手动安装插件如何卸载插件如何查找插件 建议先通过插件库来搜索你想要的插件,找到你想要的插件之后,你再选择安装方式进行安装,搜索插件请点击以下链接: Package Control中…

@insert 对象_python中列表插入append(), extend(), insert()

1 append()append:只能接收一个参数,并且只能添加在列表的最后。添加数字 In [1]: a [1,2,3] In [2]: a.append(4) In [3]: a Out[3]: [1, 2, 3, 4] 添加字符串 In [6]: a [1,2,3] In [7]: a.append("daniel") In [8]: a Out[8]: [1, 2, 3, …

mysql的锁是公平的么_lock 默认公平锁还是非公平锁?公平锁是如何定义?如何实现...

ReentrantLock的实现是基于其内部类FairSync(公平锁)和NonFairSync(非公平锁)实现的。 其可重入性是基于Thread.currentThread()实现的: 如果当前线程已经获得了执行序列中的锁, 那执行序列之后的所有方法都可以获得这个锁。公平锁:公平和非公平锁的队列…

企业性质

有限责任公司(国有控股) 有限责任公司(自然人投资或控股) 其他有限责任公司 有限责任公司(外国法人独资) 股份有限公司(非上市、国有控股) 有限合伙企业 有限责任公司(非自然人投资或控股的法人独资) 有限责任公司(外国法人独资) 有限责任公司(国有独资) 有限责任公司(台港澳法…

常用jdk的命令行工具:_jhsdb:JDK 9的新工具

常用jdk的命令行工具:我喜欢在分析性能和基于Java的应用程序的其他问题的早期步骤中使用JDK随附的命令行工具,并在诸如jcmd , jps , jstat , jinfo , jhat和jmap , jrunscript , jstack之类的 工…

佳能2900打印机与win10不兼容_佳能2900打印机和惠普1020哪种好 佳能2900打印机和惠普1020对比【详解】...

现在的人们早已经习惯遇到身边美丽的景色,就用手机进行拍摄下来了,若想长久的留住这一刻的美好,拥有一台 打印机 就是很不错的选择,如今打印机的需求量在不断的增加,市面上的打印机品牌也在不断的增多,我们…

Sublime Text for Windows的快捷键

文章目录选择文本移动光标编辑类查找/替换窗口显示书签其它选择文本 快捷键说明CtrlD先选中文本,再按CtrlD,会选中下一个相同的文本,再继续按D(Ctrl不放)则会选中下一个相同的文本,可以同时编辑被选中的文本AltF3选中文本按下快捷…

mysql 多表查询 join on_mysql多表查询

在做连表查询的时候,可以在联合的字段上面,分别加上索引字段,这样有加快搜索的速度左右连表查询时条件放在on后面和where后面的执行时机是不一样的例如test1表test2表执行SELECT * FROM test1 t1 LEFT JOIN test2 t2ON t1.not2.no AND t2.nam…

java 多模块模块变灰色_到底谁需要Java模块?

java 多模块模块变灰色拼图问题为1000。我作为X想要JPMS模块。 如果不是平台开发人员,X是什么? 我的回答是X是人(减去平台开发人员,因为那是一个条件) 。 我们都需要模块系统具有更安全的代码,从而产生更可…

python如何保持数据类型不变_python 可变和不可变数据类型、格式化输出和基础运算符...

一、可变类型和不可变类型#可变类型:在id不变的情况下,value可以变,则称为可变类型,如:列表,字典#不可变类型:value一旦改变,id也改变,则称为不可变类型(id变&#xff0c…

MacBook Air的命令终端如何在root和普通用户之间切换

有时你需要在一些root级别的目录下创建和删除文件,如果你没有切换到root用户下,系统会提示你没有权限,如下所示: liaowenxiongdeMacBook-Air:local liaowenxiong$ mkdir test mkdir: test: Permission denied liaowenxiongdeMacB…

mysql导入数据显示进度条_导入数据思路+进度条

/// ///基础数据导入/// private voidLoadBasicData(){this.NowCount 0;this.AllCount 0;this.hasResult false;try{DelegateShowProssBar mi newDelegateShowProssBar(ShowProcessBar);this.BeginInvoke(mi, new object[] { "导入基础数据", "导入数据"…

redis key失效的事件_《分享几道高频 Redis 高频面试题,面试不用愁》

1、说说 Redis 都有哪些应用场景?缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。共享Session:对于一些依赖 …

mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...

事件function count(){var sum;//获取第一个输入框的值var aparseFloat(document.getElementById("txt1").value);//获取第二个输入框的值var bparseFloat(document.getElementById("txt2").value);//获取选择框的值var cdocument.getElementById("se…

解决文件内容的中文乱码_字符集_字符编码_字符编码方案

从第三方下载的java源文件,打开查看里面的中文全部是乱码,无论你使用什么字符编码集都无法正常显示,该文件是用UTF-8编码存档的,使用UTF-8解码也同样是乱码,相信很多人遇到类似的问题,我这里解决过一个经典…

安卓清理垃圾清理代码_从战中清理代码

安卓清理垃圾清理代码从战中清除代码–验证 让我们直接从一个例子开始。 考虑一个简单的Web服务,该服务允许客户向商店下订单。 订单控制器的非常简化的版本可能如下所示– RestController RequestMapping(value "/",consumes MediaType.APPLICATION_J…

rust为什么显示不了国服_捋捋 Rust 中的 impl Trait 和 dyn Trait

缘起一切都要从年末换工作碰上特殊时期, 在家闲着无聊又读了几首诗, 突然想写一个可以浏览和背诵诗词的 TUI 程序说起. 我选择了 Cursive 这个 Rust TUI 库. 在实现时有这么一个函数, 它会根据参数的不同返回某个组件(如 Button, TextView 等). 在 Cursive 中, 每个组件都实现了…

Sublime Text for Mac的快捷键

文章目录选择文本移动光标编辑文本查找/替换窗口显示书签和标记其它选择文本 快捷键说明CommandD先选中文本,再按CommandD,会选中下一个相同的文本,再继续按D(Command不放)则会选中下一个相同的文本,可以同时编辑被选中的文本Con…