Python 身份混淆,是操作员吗

Python 身份混淆,是操作员吗,python,python-2.6,Python,Python 2.6,我最近看到了以下代码: x = [2, 3, 4] if type(x) is list: #some logic 我想,is检查内存标识,x的id与list的id不同,但是如果是这样的话,if条件是怎么发生的呢?(我当时的印象是Python中唯一的原生单例是None)。这里x是classlist的一个实例,在新样式的classtype()中返回实例本身的类,即本例中的list。考虑这个简单的例子: >>> class A(object): pass ...

我最近看到了以下代码:

x = [2, 3, 4]
if type(x) is list:
    #some logic

我想,
is
检查内存标识,
x
id
list
id
不同,但是如果是这样的话,
if
条件是怎么发生的呢?(我当时的印象是Python中唯一的原生单例是
None
)。

这里
x
是class
list
的一个实例,在新样式的class
type()
中返回实例本身的类,即本例中的
list
。考虑这个简单的例子:

>>> class A(object):
    pass
... 
>>> type(A())         #calling type on the instance returns its class
<class '__main__.A'>
>>> type(A()) is A
True

它没有检查x的id。它正在检查x类型的id。@M4rtini我仍然从
id(type(x))
id(type(list))
@edgararroutiounian
type(list)
type
,而
type(x)
list
,为什么会有相同的id?
id(type(x))
id(list)
应该为您提供相同的id。
类型(列表)
只需为您提供类型对象的类型,而不会是相同的。
列表
类型的副本有多少?
>>> class A:
    pass
... 
>>> type(A())
<type 'instance'>