On Fri, 04 Dec 2015 18:38:03 +1000, Nick Coghlan <ncogh...@gmail.com> wrote: > Summarising that idea: > > * literals: any of the dedicated expressions that produce an instance > of a builtin type > * constant literal: literals that produce a constant object that can > be cached in the bytecode > * dynamic literal: literals containing dynamic subexpressions that > can't be pre-calculated > * display: legacy term for a dynamic literal (originally inherited from ABC) > * comprehension: a dynamic literal that creates a new container from > an existing iterable > * lexical literal: constant literals and dynamic string literals [1] > > The ast.literal_eval() docs would need a slight adjustment to refer to > "literals (excluding container comprehensions and generator > expressions)", rather than the current "literals and container > displays".
Except that that isn't accurate either: >>> import ast >>> ast.literal_eval('[1, id(1)]') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/rdmurray/python/p36/Lib/ast.py", line 84, in literal_eval return _convert(node_or_string) File "/home/rdmurray/python/p36/Lib/ast.py", line 57, in _convert return list(map(_convert, node.elts)) File "/home/rdmurray/python/p36/Lib/ast.py", line 83, in _convert raise ValueError('malformed node or string: ' + repr(node)) ValueError: malformed node or string: <_ast.Call object at 0xb73633ec> So it's really container displays consisting of literals, which we could call a "literal container display". I think the intuitive notion of "literal" is "the value is literally what is written here". Which is a redundant statement; 'as written' is, after all, what literally means when used correctly :). That makes it a language-agnostic concept if I'm correct. I think we will find that f strings are called f expressions, not f literals. --David _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com