id()
>>>id(3)
2531362761072
>>>id(3.222222)
2531397393680
>>>id(3.0)
2531397392816
内建函数,英文为built-in Function,读者根据名字也能猜个八九不离十了。不错,就是Python中已经定义好的内部函数。
用内建函数id()可以查看每个对象的内存地址,即身份。
返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的 id() 值。
用id()得到的内存地址是只读的,不能修改。
type()
>>> type(3)
<class 'int'>
>>>type(3.0)
<class 'float'>
<<<type(3.222222)
<class 'float'>
<class 'int'>说明3是整数类型(Interger);<class 'float'>则告诉我们该对象是浮点型(Floating point real number)。与id()的结果类似,type()得到的结果也是只读的。
type(object)
传入一个参数时,返回 object 的类型。 返回值是一个 type 对象,通常与 object.__class__ 所返回的对象相同。
推荐使用 isinstance() 内置函数来检测对象的类型,因为它会考虑子类的情况。
type(name, bases, dict, **kwds)
传入三个参数时,返回一个新的 type 对象。 这在本质上是 class 语句的一种动态形式,name 字符串即类名并会成为 __name__ 属性;bases 元组包含基类并会成为 __bases__ 属性;如果为空则会添加所有类的终极基类 object。 dict 字典包含类主体的属性和方法定义;它在成为 __dict__ 属性之前可能会被拷贝或包装。
isinstance(object,classinfo)
如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True。 如果 object 不是给定类型的对象,函数将总是返回 False。 如果 classinfo 是类型对象元组(或由其他此类元组递归组成的元组),那么如果 object 是其中任何一个类型的实例就返回 True。 如果 classinfo 既不是类型,也不是类型元组或类型元组的元组,则将引发 TypeError 异常。