Python 没有类名的列表是如何创建的?

Python 没有类名的列表是如何创建的?,python,python-internals,Python,Python Internals,可以创建如下列表: l = list() l.append(1) l = [1] 但是,最常用的方法是创建如下列表: l = list() l.append(1) l = [1] 我的问题在概念上很简单,但在答案上可能非常复杂,但是列表是如何用普通类符号之外的符号创建的呢 我已经在上查看了源代码,但找不到它在哪里定义了列表符号[] 我不是问[]和list之间的区别,我是问你为什么可以使用[]。该对象的创建方式如何可能与其他对象不同?[1]是一个列表文字-它隐式创建列表,其中包含1,并

可以创建如下列表:

l = list()

l.append(1)
l = [1]
但是,最常用的方法是创建如下列表:

l = list()

l.append(1)
l = [1]
我的问题在概念上很简单,但在答案上可能非常复杂,但是列表是如何用普通类符号之外的符号创建的呢

我已经在上查看了源代码,但找不到它在哪里定义了列表符号[]

我不是问[]和list之间的区别,我是问你为什么可以使用[]。该对象的创建方式如何可能与其他对象不同?

[1]是一个列表文字-它隐式创建列表,其中包含1,并将其存储在堆中。我相信,如果您在代码库中多挖掘一点,就可以找到这个

[1]是一个列表文字-它隐式创建包含1的列表,并将其存储在堆中。我相信,如果您在代码库中多挖掘一点,就可以找到这个

列表文字[…]由语法定义,与if和while等关键字相同:

当代码生成器在AST中遇到列表文字时,它会生成特定的字节码以创建列表:

>>> import dis
>>> dis.dis('[]')
  1           0 BUILD_LIST               0
              2 RETURN_VALUE
然而,对列表的调用与任何其他可调用的调用一样进行处理:

>>> dis.dis('list()')
  1           0 LOAD_NAME                0 (list)
              2 CALL_FUNCTION            0
              4 RETURN_VALUE
对于非空列表,文本中的表达式将添加到堆栈中,以供BUILD_LIST使用:

类调用列表[1,2]必须首先使用BUILD_list创建一个列表,然后再将其作为参数传递给list。

列表文字[…]由语法定义,与if和while等关键字相同:

当代码生成器在AST中遇到列表文字时,它会生成特定的字节码以创建列表:

>>> import dis
>>> dis.dis('[]')
  1           0 BUILD_LIST               0
              2 RETURN_VALUE
然而,对列表的调用与任何其他可调用的调用一样进行处理:

>>> dis.dis('list()')
  1           0 LOAD_NAME                0 (list)
              2 CALL_FUNCTION            0
              4 RETURN_VALUE
对于非空列表,文本中的表达式将添加到堆栈中,以供BUILD_LIST使用:


类调用列表[1,2]必须首先使用BUILD_list创建一个列表,然后再将其作为参数传递给list。

list是类的名称,还有一个内置项,但我想知道python源代码中定义为使用方括号创建的内容:我更想问的是,如何使用不同于常规类标记的标记来定义新的数据结构。可能重复的列表是类的名称,还有一个内置项,但我想知道在python源代码中,它在哪里被定义为使用方括号创建的:我更想问的是,如何使用不同于常规类标记的标记来定义新的数据结构