Python 为什么dict.fromkeys(keys,value)有效,而list.append()无效?

Python 为什么dict.fromkeys(keys,value)有效,而list.append()无效?,python,types,keyword,Python,Types,Keyword,我对python非常陌生,看到我们可以通过dict获得dict。从keyskey,value,我不知道为什么这里可以使用dict,而不是dict 对于list和int或str,如果使用 list.append(1) TypeError Traceback (most recent call last) <ipython-input-40-f15c629423f5> in <module>() 1

我对python非常陌生,看到我们可以通过dict获得dict。从keyskey,value,我不知道为什么这里可以使用dict,而不是dict

对于list和int或str,如果使用

list.append(1)
TypeError                                 Traceback (most recent call last)
<ipython-input-40-f15c629423f5> in <module>()
      1 
----> 2 list.append(1)

TypeError: descriptor 'append' requires a 'list' object but received a 'int'
什么是“类型”类型

这可能是一个愚蠢的问题,但我在网上找不到任何答案,任何人都可以帮助吗?

是一个,基本上意味着它不需要附加到dict类的实例才能工作。这很有意义-dict.fromkeys基本上是dict的替代构造函数

另一方面,是一个常规的实例方法,这意味着我们需要一个实际的列表实例来调用.append。这也是有意义的-追加是一种不在创建列表之前的操作,即我们需要追加一个列表


我们还可以引用实例方法作为类属性,并返回一个常规函数对象,我们将实例作为第一个参数传递给它,即list.appendsome_list,“foo”

dict是一个类,也称为类型,如果使用调用语法dict,它会创建这种类型的对象。类/类型本身就是类型类型的对象。除非您用实际的列表对象覆盖了类型列表,否则语法是list.appendL,1,其中L是列表。谢谢,现在有很多意义了。还有一个问题,为什么typedict返回'type'而不是'class'或'class name'之类的东西?@Kurt这是一个有点棘手的问题,但简短的回答是因为dict实际上是一个类型类的实例,它为我们创建了dict的实例!请注意,dict.\uuuuuu class\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这是Python中的一个高级主题,在e-satis的回答中可以找到一个很好的概述。
list.append([1])

TypeError                                 Traceback (most recent call last)
<ipython-input-41-b98586d7f7ed> in <module>()
      1 
----> 2 list.append([1])

TypeError: append() takes exactly one argument (0 given)
type(dict)

return type