首页 > Python > 在 Python 中检查类型的规范方法是什么?有没有方法来确定变量是列表、字典还是其他东西?

在 Python 中检查类型的规范方法是什么?有没有方法来确定变量是列表、字典还是其他东西?

上一篇 下一篇

在 Python 中检查类型的规范方法是什么?有没有一种简单的方法来确定变量是列表、字典还是其他东西?

分割线

网友回答:

用:type()

>>> a = []
>>> type(a)
<type 'list'>
>>> f = ()
>>> type(f)
<type 'tuple'>

分割线

网友回答:

有两个内置函数可帮助您识别对象的类型。如果需要对象的确切类型,则可以使用,并根据某些内容检查对象的类型。通常,您希望在大多数时候使用,因为它非常健壮并且还支持类型继承。type()isinstance()isinstance()


若要获取对象的实际类型,请使用内置函数。将对象作为唯一参数传递将返回该对象的类型对象:type()

>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True

这当然也适用于自定义类型:

>>> class Test1 (object):
        pass
>>> class Test2 (Test1):
        pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True

请注意,这只会返回对象的直接类型,但无法告诉您有关类型继承的信息。type()

>>> type(b) is Test1
False

为了覆盖这一点,您应该使用该函数。这当然也适用于内置类型:isinstance

>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True

isinstance()通常是确保对象类型的首选方法,因为它也将接受派生类型。因此,除非您实际需要类型对象(无论出于何种原因),否则首选使用 。isinstance()type()

的第二个参数也接受类型元组,因此可以一次检查多个类型。 然后返回 true,如果对象属于以下任何类型:isinstance()isinstance

>>> isinstance([], (tuple, list, set))
True

分割线

网友回答:

使用…块。这样,如果你有一个像列表一样嘎嘎叫,或者像字典一样嘎嘎叫的类,无论它的实际类型是什么,它都会正常运行。tryexcept

澄清一下,在变量类型之间“区分”的首选方法是使用称为鸭子类型的东西:只要变量响应的方法(和返回类型)是你的子例程所期望的,就把它当作你期望的对待。例如,如果你有一个类,它用 and 重载括号运算符,但使用一些有趣的内部方案,如果这是它试图模拟的,那么它表现为字典是合适的。getattrsetattr

检查的另一个问题是,if 是 的子类,它以编程方式计算到您希望它何时。如果一个对象是列表的子类,它应该像列表一样工作:检查另一个答案中提供的类型将防止这种情况。(但是,将起作用)。type(A) is type(B)ABfalsetrueisinstance

模板简介:该模板名称为【在 Python 中检查类型的规范方法是什么?有没有方法来确定变量是列表、字典还是其他东西?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 236次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-19
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信文章 微信图片 微信模板 微信素材 自适应 响应式 html5 微信公众平台 企业网站 单页式简历模板
您可能会喜欢的其他模板