• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python-为什么没有-void-关键字

python 搞java代码 3年前 (2022-07-03) 38次浏览 已收录 0个评论

void 是编程语言中最常见的关键字之一,从字面上了解,它是“空的、空集、空白”的意思,最罕用于示意函数的一种返回值类型。

维基百科上有一个定义:

The void type, in several programming languages derived from C and Algol68, is the type for the result of a function that returns normally, but does not provide a result value to its caller.
在 C、Algol68 及它们所派生的几种编程语言中,void 类型是函数失常返回的一种类型,然而不会给调用者返回一个值。

简略来说,void 是一种类型(type),然而没有具体的值(value)。

这到底是什么意思呢?

以 Python 的几种常见类型为例,咱们能够从比照中看出法则:int 是一种示意整数的类型,它有有限个可能的整数值;bool 是一种布尔类型,它有两个可能的值(True 和 False);NoneType 是一种示意 None 的类型,它只有一个值(None)。

至于 void,它是一种更为形象的非凡类型,然而不蕴含任何值。

介绍完概念上的含意,咱们就能够进入正题了。题目中的问题能够进一步分解成两个:

  • 其它语言为什么要应用 void 关键字?
  • Python 为什么不设计出 void 关键字?

对于第一个问题,咱们以 C/C++ 为例,先看看 void 的两种应用场景

当 void 用在函数的参数地位时,它示意该函数不须要传参

最后 C 语言的f() 示意参数数量不确定,为了另外表白“不须要参数”的语义,所以引入f(void) 作为限定。起初的语言(包含 Python)根本不在参数中应用 void,而是间接用f() 示意不需传参。C++ 为了兼容 C,所以才同时反对这两种语法。

当 void 用在函数前作润饰时,它示意该函数没有返回值。

在 C 语言中,若不申明返回类型,则f() 函数在编译后会返回整型的值。为了防止凌乱,当不须要返回值时,就应用void f() 来作限定。

同时,更次要的是,它还起到了占位符的作用,表明一个函数的类型是已知的,这对代码可读性和编译都有所帮忙。

void 作为函数的空返回值类型,这种用法在 C++/Java 中也被继承了。另外,在 Javascript 中也有 void 的身影,只不过它成了一种操作符,起到了齐全不同的作用,此处不表。

然而,Python 从头到尾都没有 void 关键字。

为什么会这样?难道是因为在 Python 中不存在其它语言所面对的问题么?还是说,Python 中有本人的一套解决方案?

仍以跟函数相干的两种用法为例作剖析吧。

在示意函数不需传参时,f(void)这种写法根本就是多余的,所以 Python 应用了最简单明了的无参式写法f()。

至于返回值类型的用法,在咱们定义出一个函数时,例如最简略的def func():pass ,为了让它的调用后果func() 是一个非法的对象,那它必须具备一个无效的类型(type)。

这应该是以类型为基的编程语言都会遇到的共性问题,Python 也不例外。

这个时候,如果函数自身没有显式地 return 出一个对象的话,就有两种可能的解决办法:

  • 办法一,即申明该函数为 void 类型,像 C 和其它语言所做的那样,只有能通过类型查看即可
  • 办法二,则是 Python 所用的办法,即令解释器隐式地返回一个 None 对象,也就是令函数默认失去一个 NoneType 类型,再用于类型查看(PS:Javascript 也相似,只不过它默认返回的是 undefined,它不是一个对象,而是一种示意“未定义”的类型,相似于 void)

简略而言,Python 的设计思路是间接复用已有的 NoneType 类型,并让解释器来填补缺失掉的函数类型。

这样做的益处至多有两点:一是没有引入新的 void 类型和关键字;二是不须要程序员在函数前申明返回类型,这就跟有显式返回值的写法放弃了统一。

试想一下,如果 Python 不让函数默认有返回值的话,就可能要写成 void def func():… 这样的模式,那它就变成了函数定义时的一种特例。与另一种特例函数相比,即异步函数asyc def func():… ,就可能引起凌乱。

总体而言,Python 仿佛认为 void 空类型不是那么有存在的必要,仿佛 NoneType 类型就足够了,而当短少返回值时,让解释器对立注入是极为不便的,因而才呈现了咱们看到的现状。

至此,文章题目的问题算是圆满答复了。

以上就是本次分享的所有内容,想要理解更多 python 常识欢送返回公众号:Python 编程学习圈 ,发送 “J” 即可收费获取,每日干货分享


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python-为什么没有-void-关键字

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址