What is a function parameter =[] for?

Steven D'Aprano steve at pearwood.info
Tue Nov 24 19:34:45 EST 2015


On Wed, 25 Nov 2015 06:00 am, Random832 wrote:

> On 2015-11-24, Chris Angelico <rosuav at gmail.com> wrote:
>> Probably the grammar. In other words, it's part of the language's very
>> definition.
> 
> Then the definition is wrong. I think "literal" is a word whose meaning is
> generally agreed on, rather than something each language's spec can invent
> from whole cloth for itself. It's not a python term, it's a programming
> term.

Well, I don't know about that. According to you, and Ruby, this is a
literal:

[x+1, y+2*x, func(arg), MyClass(a, b)]

http://ruby-doc.org/core-2.1.1/doc/syntax/literals_rdoc.html#label-Arrays

which seems like an abuse of the term to me. How can it be a *literal* when
it contains non-literal expressions which aren't known until runtime?

Although I note that the actual examples of Array literals and Hash literals
in the Ruby docs punt on the issue by only showing expressions that could
be replaced by constants by a peephole optimizer.


Lua refers to *string literals* but *table constructors*:

http://www.lua.org/manual/5.1/manual.html

Apart from strings, the above manual avoids the use of "literal".



> And the documentation doesn't even use it consistently; it calls {} a
> literal.

Citation required.


-- 
Steven




More information about the Python-list mailing list