python - 在 Python 中创建一个列表——有什么鬼鬼祟祟的事情发生吗?

标签 python list constructor

抱歉,如果这没有任何意义,我是 Python 的新手!

通过在解释器中的测试,我可以看到 list()[] 都产生了一个空列表:

>>> list()
[]
>>> []
[]

根据我目前所学,创建对象的唯一方法是调用其构造函数 (__init__),但是当我只键入 时我没有看到这种情况发生[]。那么通过执行 [],Python 是否会将其映射到对 list() 的调用?

最佳答案

这两个构造的处理方式截然不同:

>>> import dis
>>> def f(): return []
... 
>>> dis.dis(f)
  1           0 BUILD_LIST               0
              3 RETURN_VALUE        
>>> def f(): return list()
... 
>>> dis.dis(f)
  1           0 LOAD_GLOBAL              0 (list)
              3 CALL_FUNCTION            0
              6 RETURN_VALUE        
>>> 

[] 形式使用操作码BUILD_LIST 构造列表,而list() 形式调用list 对象的构造函数。

关于python - 在 Python 中创建一个列表——有什么鬼鬼祟祟的事情发生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736693/

相关文章:

使用远程 API 创建 docker 容器的 Python 脚本

java - 迭代二维列表并将元素放入哈希表中

python - 从列表值中获取所有组合

python - NaN 导致 tensorflow 神经网络

python - 在 Python 中将来自两个不同字典的值相乘

javascript - 预检响应中的 Access-Control-Allow-Headers 不允许请求 header 字段 Access-Control-Request-Methods

arrays - 仅对包含矩阵列表中完整案例的行进行子集化

Java 类的构造函数

python - Haskell相当于Python中的数据构造函数?

java - 了解Java中的深拷贝构造函数