我竟然发现了Python的秘密数据类型!?
本帖最后由 KeyError 于 2022-11-16 19:40 编辑打开Python交互模式,输入:
>>> type(3+3j)
输出:
<class 'complex'>
{:5_94:}
我们明明只知道Python数据类型有int,float,bool,str,list,tuple,dict呀,但Python说3+3j是complex类型呀,嗯……
还没完:
>>> type(None)
<class 'TypeNone'>
你以为完了?:
>>> type(type(4))
<class 'type'>
解释:
complex是Python的复数类型,(0+1j)是虚数单位*
因为type(4)就是一个类型,所以Python说它是一个类型。
*:直接输j会有NameError
任何类都是object的子类,type的对象。 type其实是查看当前对象是由什么类实例化出来的
比如这个代码
>>> class hello:
... pass
...
>>> a = hello()
>>> type(a)
<class '__main__.hello'>
>>> 这帖子会被删掉的,不用回复了。 >>>type(help)
<class '_sitebuiltins._Helper'>
>>> class A:
pass
>>> type(A)
<class 'type'>
所以'type'是一个类的名称。
>>> type(type)
<class 'type'>
>>> a=A()
>>> type(a)
<class '__main__.A'>
>>> type(Ellipsis)
<class 'ellipsis'>
可以自己去看python Shell的Help。 本帖最后由 KeyError 于 2022-11-16 19:41 编辑
>>> def f():
print(3)
>>> type(f)
3
<class 'function'>
函数在Python里的类型是'function'? 试试:
>>> type(print)
<class 'builtin_function_or_method'>
>>> type(input)
#跟print一样,省略。 >>> type
<class 'type'>
可见type()是将数据转换为type类型。 KeyError 发表于 2022-8-20 12:09
这帖子会被删掉的,不用回复了。
你们真不回复了?
{:10_266:} >>> type(int.__add__)
<class'wrapper_descriptor'>
python中有些类型是找不到的,像魔法方法'wrapper_descriptor'。
KeyError 发表于 2022-8-21 10:59
>>> def f():
print(3)
f()在这里只会打印3,而你没有指定返回值,所以默认返回None,type(None)也是一样的效果 临时号 发表于 2022-8-23 15:56
f()在这里只会打印3,而你没有指定返回值,所以默认返回None,type(None)也是一样的效果
一个函数的类型应该就是它返回的值的类型吧(函数默认返回None)。 KeyError 发表于 2022-8-24 18:34
一个函数的类型应该就是它返回的值的类型吧(函数默认返回None)。
不,你这里看得不是函数的类型,而是函数的返回值的类型
看函数的类型应该是
def f():
print("Hello")
type(f) python2:
>>> type(1234567890)
<class 'long'>
>>> type(b'abcde')
#错误提示信息
python3:
>>> type(1234567890)
<class 'int'>
>>> type(b'abcdef')
<class 'bytes'>
页:
[1]