method和function(学编程这么久,还傻傻分不清什么是 *** (met

生活常识 2023-04-20 19:19生活常识www.baidianfengw.cn

函数的定义被编程了这么久,但我还是能 我分不清什么是 ,什么是函数。

优质文章,之一时间送达!

作者猫下的豌豆花

出发地蟒蛇猫

链接https://mp.weixin.qq.com/s/e6rIc-dPhbqWAeJvekawwQ

编程语言中有两个基本概念,即 和函数。如果你已经达到了编程的初级/入门水平,那么你的脑海中一定已经有了一个初步的答案。

也许你心里已经有答案了。

除了参数、返回值和匿名函数等正确的形式内容之外,你可能会说 函数定义在类的外部,而 定义在类的内部并绑定到类 。

这种说法有问题吗?有!否则,我不会 我没有专门写过这篇文章。本文将主要澄清这个问题。

在标准的库检查中,它提供了两个内省函数,即i ethod和isfunction,可以用来判断什么是 ,什么是函数。

所以本文想先研究这两个函数,看看Python是如何处理 /函数概念的。

关于它们的用法,让 让我们看一个简单的例子

运行的结果是 真实 和 虚假 分别表示我们定义的测试是一个函数,而不是一个 。

这两个函数也可以用来自测,验证它们都是函数并不困难

那么,下一个问题是inspect 库的两个函数是什么工作原理呢?.

让 让我们看看inspect中的实现代码

在源代码中,我们看到isinstance函数,主要用来判断一个对象是否是一个类的实例。

我们也看到了类型。函数类型和类型。MethodType,引用目标类。继续点击查看源代码

#摘自类型。pydef _ f : passfunctiontype=type(_ f)class _ c : def _m(self): pas ethodtype=type(_ c . _ m)这里只定义了两个empty _ f和_ m,然后使用内置的类型函数。所以,我们可以把它们挑出来,看看庐山的本来面

梳理它们的关系,我们可以得到

经过简化,我们发现最关键的问题有两个type 函数如何判断出一个对象是 function 或 method 类?instance 函数如何判断出一个对象是某个类的实例?.

这两个内置函数都是用C语言实现的,所以I 我不打算在这里深究它们.

,让我们 让我们回头看看inspect中的评论,我们会注意到一些线索

Isfunction判断用户定义的函数(user-defined function),有__doc__,__name__,等等。

I ethod判断实例 (instance method),具有函数的一些性质,最特别的是它具有__self__性质。

笔记更有用,从中我们可以得出以下推论

1.非用户定义的函数,即内置函数,不是 函数类型 在isfunction的眼里!

让 验证镜头、方向和范围

实际上,它们有自己的类别(BuiltinFunctionType,BuiltinMethodType):

特别需要注意的是,内置函数都是builtin_function_or_method类型,range、type、list等。看起来像函数,但它们不是

2.类的静态 在i ethod眼里不是MethodType!

创建类的实例后,查看

可以看出,除了clas ethod,只有类实例的实例 才会被i ethod判断为真!静态 ,不管是绑定到类还是实例,都不是 与技巧。!

有没有觉得不可思议(或者有点迷茫)?

好了,回到本文开头的问题,让 让我们一下。

若以 inspect 库的两个函数为判断依据,则 Python 中的“ 与函数”具有一定的狭义性。在判断什么是函数时,它们并不把内置函数计算在内。,在判断什么是 时,并非定义在类内部的都算,而是只有类 及绑定了实例的实例 才算是“ ”。

也许你会说inspect的两个判断函数不可信,内置函数也应该算是 功能和功能。类中的所有 都应该被视为 与技巧。。

我承认这种说法在广义上是可以接受的。毕竟,我们一直呼吁的是 XX函数 和 XX 。

但理论和广义概念只是为了方便人们交流和理解,代码实现才是本质区别。换句话说,当Python实际区分 和功能 ,不是文章开头简单的陈述,还有更多细节值得关注。

回复下面的「关键词」获取优质资源。

回复关键字 pybook03并且马上拿到首页君和他的朋友翻译的《Think Python 2e》的电子版。

回复关键字 入门资料并立即获得首页君整理的10本Python入门书的电子版。

回复关键字 m并立即获得Python精选的高质量文章的 。

回复关键词「」,将数字替换成 0 及以上数字,有惊喜好礼哦~

pexels,CC0授权。

method 的返回式编程函数的三种用法

Copyright@2015-2025 白癜风网版板所有