ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – `type`真的是一个函数吗?

2019-07-15 11:59:27  阅读:188  来源: 互联网

标签:python object function types python-3-x


首先,如果我问一些愚蠢的话,我很抱歉,因为我是Python新手…
我正在阅读http://docs.python.org/3.1/reference/datamodel.html#objects-values-and-types并看到这句话:

The type() function returns an object’s type (which is an object itself)

当然,我决定检查一下:

>>> def someFunction(x):
...     return x * x
...     
>>> type(someFunction)
<class 'function'>
>>> type(type)
<class 'type'>

所以,看起来函数有函数类型,但是如果它是函数,为什么类型函数有不同的类型?或者说文档是撒谎,它不是真正的功能?

解决方法:

是的,type是一个函数,但它是用C实现的.

它也必须是它自己的类型,否则你不能这样做:

>>> def foo(): pass
... 
>>> type(foo)
<type 'function'>
>>> type(type)
<type 'type'>
>>> isinstance(type(foo), type)
True

例如如果类型的类型不是类型而是函数,则无法测试类型是否为类型.我还在吗?

从技术上讲,type是可调用的,并且有两个相关的角色可以玩.它是一个元类(一个类工厂),是Python中所有类型的基础,当调用它时会产生一个类型实例(< type'function'>是一个类型类型的实例).

这同样适用于所有类型(包括类);调用它们并生成给定类型的新实例.

标签:python,object,function,types,python-3-x
来源: https://codeday.me/bug/20190715/1467326.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有