
Python里怎么查看数据类型
Python是一种动态类型的编程语言,也就是说,变量的类型是在运行时确定的,而不是在编写代码时。这样有利于提高编程的灵活性和效率,但也可能导致一些类型错误或混淆。因此,有时候我们需要查看变量的数据类型,以便进行正确的操作或判断。
Python里可以通过type()函数来查看数据类型。type()函数接受一个对象作为参数,返回该对象的类型。例如:
>>> x = 10
>>> type(x)
<class 'int'>
>>> y = "Hello"
>>> type(y)
<class 'str'>
>>> z = [1, 2, 3]
>>> type(z)
<class 'list'>
从上面的例子可以看出,使用type()函数,可以查看这三个变量的类型,输出的结果是int、str和list。
type()函数还可以用来创建新的类型对象,只需要传入三个参数:类的名称、基类的元组和类内定义的命名空间变量。例如:
>>> class Person(object):
... def __init__(self, name, age):
... self.name = name
... self.age = age
...
>>> p = Person("Alice", 20)
>>> type(p)
<class '__main__.Person'>
>>> Person = type("Person", (object,), dict(__init__=lambda self, name, age: (setattr(self, "name", name), setattr(self, "age", age))))
>>> q = Person("Bob", 25)
>>> type(q)
<class '__main__.Person'>
从上面的例子可以看出,使用type()函数,可以创建一个新的类型对象Person,并用它来实例化一个对象q。输出的结果是<class '__main__.Person'>。
除了type()函数外,Python还提供了另一个内置函数isinstance()来判断一个对象是否是某个类型或其子类的实例。isinstance()函数接受两个参数:一个对象和一个类型或类型的元组。例如:
>>> x = 10
>>> isinstance(x, int)
True
>>> isinstance(x, (int, float))
True
>>> isinstance(x, str)
False
从上面的例子可以看出,使用isinstance()函数,可以判断x是否是int或float或其子类的实例,输出的结果是True或False。
isinstance()函数与type()函数的区别在于,isinstance()函数会考虑继承关系,而type()函数不会。也就是说,如果一个对象是某个类的子类的实例,那么isinstance()函数会返回True,而type()函数会返回False。例如:
>>> class Animal(object):
... pass
...
>>> class Dog(Animal):
... pass
...
>>> a = Animal()
>>> d = Dog()
>>> isinstance(a, Animal)
True
>>> type(a) == Animal
True
>>> isinstance(d, Animal)
True
>>> type(d) == Animal
False
从上面的例子可以看出,使用isinstance()函数和type()函数,可以判断a和d是否是Animal或其子类的实例,输出的结果不同。isinstance()函数返回True,而type()函数返回False。
总之,Python里查看数据类型的内置函数有两个:type()和isinstance()。type()函数返回对象的类型,isinstance()函数判断对象是否是某个类型或其子类的实例。如果要判断两个类型是否相同推荐使用isinstance()函数。
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv179471