【问题标题】:Why does the Python documentation call [1, 2] a list "display" instead of a "literal"?为什么 Python 文档将 [1, 2] 称为列表“显示”而不是“文字”?
【发布时间】:2019-11-07 16:43:01
【问题描述】:

Python 文档将[1, 2] 称为“list display”。

同样,它将{1, 2} 称为“set display”和{1:'a', 2:'b'} 称为“dictionary display”。

为什么使用“显示”而不是更常见的术语“文字”?

【问题讨论】:

  • 该文档中没有任何地方说 [1, 2] 是列表显示。什么?它说list_display ::= "[" [starred_list | comprehension] "]" 是一个列表显示。这与list = [1,2] 完全不同。
  • @DetectivePikachu 不,不是。尽管有这个名字,加星标的列表实际上并不一定要包含星标。在这种情况下,加星标的列表是1,2。见docs.python.org/3/reference/expressions.html#expression-lists
  • @inspectorG4dget 这不是“显示”一词在这里所指的。

标签: python list dictionary set literals


【解决方案1】:

来自preceding section的第一段:

对于构造列表、集合或字典,Python 提供了特殊的 称为“显示”的语法,每种都有两种风格:

  • 明确列出容器内容,或者
  • 他们是 通过一组循环和过滤指令计算,称为 理解。

显示是包含“文字”和理解的通用术语。

[1, foo(x), "bar"] 是一个列表文字(忽略 foo(x) 必须首先评估的事实)。

[foo(x) for x in A] 是一个列表推导式。

两者都是列表显示。


正如@r.ook 指出的那样,严格来说,该语言保留了术语literal,用于产生常量 类型值的表达式,例如strint

如果你想解释为什么f'{x}' 是一个字面量,而[1] 不是一个字面量,常量方面很关键。前者是在运行时计算的,但生成的字符串是固定的,而[1] 可以在编译时创建一个列表,但该列表可以在以后发生变化。

【讨论】:

猜你喜欢
  • 2022-01-07
  • 2014-12-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2017-07-10
  • 1970-01-01
相关资源
最近更新 更多