为什么type(string)不等于“<class'str'=”“>”?

时间:2016-04-22 11:39:58

标签: python

在Python 3 type('jjj')=="<class 'str'>"中,它评估为False,而在Python 2中type('jjj')=="<type 'str'>"具有相同的结果。不知道为什么会发生这种情况,所以任何帮助(甚至是一点推动)都会受到赞赏!

2 个答案:

答案 0 :(得分:6)

那是因为type函数没有返回字符串。它返回一个类型&#39;:

>>> type(type('hi'))
<type 'type'>

所以你现在正在做的是比较类型&#39;类型&#39;到一个类型&#39;字符串&#39;,其结果为False

我建议使用isinstance

>>> isinstance('hi', str)
True

答案 1 :(得分:1)

贝壳会引起混乱。当其他人打印类型的表示时,有些人会显示类型名称。

作为插图

  • python shell

    >>>type('jj')
    <class 'str'>
    
  • IPython的

    In [68]: type('a')
    Out[68]: str
    

这里使用了两个字符串:

In [69]: str.__name__
Out[69]: 'str'

In [70]: repr(str)
Out[70]: "<class 'str'>"

如上所述isinstance是测试类型的好方法。