文中源于“Python为何”系列产品,请查看历史文章内容

有关 Python 中的pass语句,它好像非常简单(仅有 4 个英文字母) ,即便是沒有一切程序编写工作经验的新手也可以迅速地把握它的使用方法。

官方网文本文档 的详细介绍十分简易,下边的三个事例能够使我们迅速地掌握到怎么使用它:

简易来讲,pass 是一种空实际操作(null operation) ,编译器实行到它的情况下,除开查验语法是不是合理合法,哪些都不做就立即绕过。

它跟 return、break 、continue 和 yield 这类的非空实际操作对比 ,较大 的差别是它不容易改变程序的实行次序 。它如同大家写的注释,除开占有一行编码行,不容易对所处的作用域造成一切危害。

可是 ,假如给你其他語言的基本,你或许会好奇心:为何 Python 有那么与众不同的 pass 语句,而其他語言却沒有?

Python 那么设计方案 ,到底是出自于是什么原因呢?

是以便处理绝大多数计算机语言必须应对的共性问题 ,還是因为它有自身的探索与发现,因此 造就出去一个新的特点?

也就是说:Python 为何要有 pass 语句,它能处理什么问题(益处) ,要是没有它,会造成 什么问题(弊端)?

接下去,文中将从2个层面进行剖析。

1、对人:做为室内空间占位符

我将它当作是一种简明扼要的注释方法 ,等因此说“这儿先预埋部位,回过头补上上实际的编码完成 ” 。

例如在双层的 if-elif-else 构造中,我们可以先把分辨标准写好 ,随后在相匹配的块中写上 pass,之后再渐渐地健全。

例如上原文中得出的事例,我们可以先写好类/函数名以及入参 ,随后绕过(pass)行为主体编码,之后再渐渐地添充。

pass 写起來简易,并且因为是关键词 ,IDE 会得出醒目的色调区别 ,因此 就比大家写上注释內容到来便捷些 。

pass 做为室内空间占位符,关键能够便捷大家设计构思部分的编码构造,有一定的輔助提示功效。

可是 ,若做为一种注释方法,它就看起来太薄弱了,不如写“# todo: xxxx” ,后面一种也会被 IDE 用色调显出,并且含意更确立。尽管写起來简易,但它也引进了一个看起来不必要的关键词 pass 。

因此  ,从室内空间占位符的视角看来,pass 并不是计算机语言中务必的设计方案因素。

拥有它,我们可以表述出“这里有物品 ,但临时绕过”的词义,但要是没有它,则可以用注释內容来取代。

2、对设备:以便语法一致性

针对前一条的使用方法 ,pass 出現在编码中的部位在理论上不是受到限制的 。

可是 ,大家最常应用 pass 时,基础是在灶具的下一行,并且在该层缩近的代码块中 ,仅有这一条语句 。(参照上文的 3 个事例,以便便捷,大家仅以以空函数为例子)

我们可以构想下 ,如果不写它,会如何?

回答是会报缩近不正确:IndentationError: expected an indented block

# 将函数体的 pass 除去,会出错 def func(): func()

由于 Python 应用缩进去区划代码块(对于缘故 ,请查阅《Python为什么使用缩进来划分代码块?》),而灶具标志着要出現新的缩近代码块,因此 这一事例会报缺乏缩近代码块。

如果我们用前文写的注释来取代 ,看一下会如何?

# 将函数体的 pass 换为注释 def func(): # todo:这里有物品,之后补上 func()

那样写,也会出错:IndentationError: expected an indented block

缘故是注释并不是合理的语法內容 ,它会被 Python 编译器忽视掉(ignore) ,不象 pass 语句那般是“合理的语法內容,可是绕过 ”。

换句话说,缩近代码块中务必包括有语法实际意义的內容 ,下边的事例全是合理的:

def func(): """这是一个字符串数组""" def func2(): 123456

Python 在界定函数时,务必包括函数体,即另外包括申明加界定二种词义 ,不可以像一些語言能够只应用申明的词义,即写出void test(); 。

可是,因为 Python 不应用花括号 ,它没法像一些語言那般立即定义出空函数,即写出void test(){} 。

综合性之上的剖析,Python 在界定空函数时 ,务必要有合理合法的函数体,因而设计方案出表明空实际操作的 pass 语句。它是以便填补语法的一致性,连在灶具 ,等效于其他語言中一对空的花括号 。

从语法一致性的层面上看 ,它是务必的设计方案因素,要是没有得话,也务必用相近的空语句或特殊字符来取代。

对人层面 ,pass 能够表明“临时绕过”的含意,做为临时性的占位符,最后会被具体的编码完成所更换;对设备层面 ,它则能够表明“立即绕过”,只以便补足语法逻辑性,并不会被其他编码所更换。

其他語言沒有专业的一种语句或是标记来表明这类占位符(即词义有一定的缺乏) ,可是他们也不用费思绪专业设计方案一个关键词来补足语法一致性(即语法完善) 。

返回文中开始的难题:Python 为何要有 pass 语句,它能处理什么问题(益处),要是没有它 ,会造成 什么问题(弊端)?

Python 应用 pass 语句,是以便适用纯碎空实际操作的代码块(空函数 、空类、空的循环系统操纵块这些),拥有它 ,还能附加表述出一种占位符的词义。

前面一种是针对设备来讲的 ,务必要有,等效于其他語言空心花括号的作用;后面一种是针对人来讲的,非务必的 ,可以用注释来表述,但由于 Python 设计方案了这一语句,这类使用方法有时还挺便捷的。

如果你觉得文中剖析得非常好 ,那么你应当会喜爱这种文章内容:

1、Python为何应用缩进去区划代码块?

2 、Python 的缩近是否灭绝人性的设计方案?

3、Python 为何无需分号作语句终止符?

4、Python 为什么没有 main 函数?为何我不会强烈推荐写 main 函数?

5 、Python 为何强烈推荐环形命名法?

6、Python 为何不兼容 i 自增语法,不出示 操作符?

7、Python 为何只需一条语句“a,b=b,a ”,就能立即互换2个自变量?

文中归属于“Python为何”系列产品(Python猫荣誉出品) ,该系列产品关键关心 Python 的语法 、设计方案和发展趋势等话题讨论,以一个个“为何”式的难题为突破口,尝试呈现 Python 的美丽动人风采 。全部文章内容可能存档在 Github 上 ,新项目详细地址:https://github.com/chinesehuazhou/python-whydo

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归QU快排Www.seoGurubLog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▲61910465