python中的l1 = list和l2 = list()声明不同吗?

时间:2018-06-23 08:37:45

标签: python

以下声明是否有所不同?

l1=list
l2=list()

当我使用 type()函数时,结果如下!

type(l1)
<class 'type'>

type(l2)
<class 'list'>

l1 is l2
False

这些可能表明l1和l2不相同。为什么l1属于班级类型而不是班级列表

3 个答案:

答案 0 :(得分:2)

l1 = list表示在list变量中分配l1类。

l2=list()会调用list()函数来创建list并将列表分配给l2变量。

答案 1 :(得分:1)

调用list时,将获得它的实例:

>> l = list()
>> l
[]

但是当您将list分配给另一个变量时,您会将所有List信息完全转换为另一个变量,并且可以像使用List一样使用它们,例如:

>> a = List
>> l1 = a() # same as l1 = List()
>> l1
[]
>> a
List
>> isinstance(l1, a)
True
>> isinstance(l1, List)
True

我希望这可以帮助您理解。

答案 2 :(得分:0)

在Python中,除非您要求使用括号将其调用,否则不会调用任何东西。即使没有参数。没有括号,您只是在指函数,方法,类或任何值。 (这与其他语言(例如Ruby或Perl)不同。)

对于函数或方法,这可能会更加明显:

>>> input
<function input>
>>> abs
<function abs>
>>> 'abc'.upper
<function str.upper>

…但是与类完全相同:

>>> list
list

这些都是非常好的值,我们甚至可以将其存储在变量中:

>>> abcupper = 'abc'.upper

当您调用函数或方法时,您会知道它的作用。调用类时,这就是构造类实例的方式。

无论哪种方式,都需要括号:

>>> abs(-2)
2
>>> list((1, 2, 3))
[1, 2, 3]

…即使没有参数:

>>> 'abc'.upper()
'ABC'
>>> list()
[]

…即使您正在调用先前存储在变量中的方法:

>>> abcupper()
'ABC'