[Python-Dev] removing nested tuple function parameters
Guido van Rossum
guido at python.org
Mon Sep 19 19:21:28 CEST 2005
On 9/19/05, Terry Reedy <tjreedy at udel.edu> wrote:
>
> I consider the current situation to be a consistency feature. To a first
> approximation, Python function calls 'pass' objects by name-binding:
>
> param_name_list = arg_object_list
>
> Disabling structure unpacking in this assignment would make the language
> slightly more complex. Someone else posted the same observation in c.l.p.
Maybe, but there are enough differences between parameter/argument
lists and sequences that this consistency sounds rather foolish to me.
In fact, the feature came from a similar feature in ABC, but in ABC,
parameter lists *were* considered assignment targets -- the outer
level of parentheses was just a special case of tuple unpacking. Not
so in Python, which has keyword parameters, *varargs, **keywords, and
where f(x,) is the same as f(x) -- even though (x,) is a tuple and (x)
is not.
Also, I bet many people will be surprised to know that this code doesn't work:
add = lambda (x, y): x+y
print add(1, 2)
> Another thought. By directly unpacking and not naming a sequence, one
> 'announces' that only the components are of interest and that nothing will
> be done with the sequence object itself.
Fair enough, though I'm not sure what use we can make of that information.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list