dict'是False,但返回类型却是<type 'dict'>?

1 投票
3 回答
1542 浏览
提问于 2025-04-17 08:37
>>> flob = {u'': [u''], u'DL': [u'DL'], u'Gender': [u'Both Sexes'], u'SQ': [u'SQ'], u'BP': [u'BP'], u'Location': [u'World Wide']}

>>> flob is dict

False

>>> flob == dict

False

>>> type(flob)

<type 'dict'>

我问它是不是字典类型,它说不是。我再问它是什么类型,它却说是字典。为什么会这样呢?

3 个回答

3

这个橙子和我们说的橙子这个概念是一样的吗?

这个橙子的价值和我们说的橙子这个概念的价值是一样的吗?

这个橙子到底是什么样的东西?

3

is 用于比较两个对象是否是同一个,也就是比较它们的身份。下面有个提示:id 可以返回一个对象在内存中的位置,id(a) == id(b) 就相当于在说 a is b。如果你想检查一个对象的类型(这种情况应该少用),可以使用 isinstance

>>> flob = {u'': [u''], u'DL': [u'DL'], u'Gender': [u'Both Sexes'], u'SQ': [u'SQ'], u'BP': [u'BP'], u'Location': [u'World Wide']}
>>> id(flob)
17665920
>>> id(dict)
8678496
>>> id(flob) == id(dict)
False
>>> type(flob) == dict
True
>>> isinstance(flob, dict)
True
8

因为你在比较的是对象本身,也就是dict的实例,而不是dict这个类型...这两者是不同的东西。is用来判断两个变量名是否指向同一个对象。

 type({}) is dict  # returns true.

 a = {}
 b = a
 a is b  # returns true

撰写回答