有人可以就以下结果提供一些评论。当我写作时,我特别感到困惑的是:alist = [None] * 5在#1中 以及为什么'is'语句为False,但isinstance在#3中为True 非常感谢。
#1
>>> alist = [None]*5
>>> alist
[None, None, None, None, None]
>>> type(alist[0])
<type 'NoneType'>
>>> type(alist[0]) is None
False
#2
>>> alist = [int]*5
>>> alist
[<type 'int'>, <type 'int'>, <type 'int'>, <type 'int'>, <type 'int'>]
>>> type(alist[0]) is int
False
>>> isinstance(alist[0],int)
False
#3
>>> alist = [0.0]*5
>>>type(alist[0])
<type 'float'>
>>> alist[0] is float
False
>>> isinstance(alist[0],float)
True
答案 0 :(得分:2)
当我写作时我实际上在做什么:alist = [None] * 5 in
您正在列表中调用*运算符。 见这里:http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange
为什么'是'语句是假的
因为<type 'NoneType'>
不是None
,所以它是None
的类型。
#3中的isinstance为True
因为alist[0]
是float
类型的实例。不是那么难,是吗?