Unpacking sequences and keywords in one function call
OKB (not okblacke)
brenNOSPAMbarn at NObrenSPAMbarn.net
Tue Nov 14 13:20:01 EST 2006
Dennis Lee Bieber wrote:
> On Tue, 14 Nov 2006 05:45:57 GMT, "OKB (not okblacke)"
> <brenNOSPAMbarn at NObrenSPAMbarn.net> declaimed the following in
> comp.lang.python:
>
>>
>> I was just wondering about this yesterday. Is there a
>> reason you
>> can only unpack a sequence at the END of the positional
>> argument list?
>
> Not a reasoned explanation, but... Python has to be able to
> assign
> "defined" parameters before gathering the */** parameters.
Sorry, I don't really understand what you mean by that. I'm
talking about the UNpacking of a sequence into separate function
arguments, which I was assuming happened on the "outside" at the time
the function was called. That is, why aren't these two calls exactly
the same:
a = [2,3]
f(1, *a, 4)
f(1, 2, 3, 4)
I don't understand why Python would need to assign "defined
parameters" first -- the sequence unpacking here can happen before
anything is mapped to the function parameters at all. (Can't it?)
I can see why moving the kwargs up earlier in the list isn't valid,
because it isn't valid for normal argument-passing either; switching the
order of individually named kwargs and a **dict isn't meaningful because
the kwargs aren't ordered anyway. But is there a reason you can't
unpack a sequence into the middle of the positional argument list?
--
--OKB (not okblacke)
Brendan Barnwell
"Do not follow where the path may lead. Go, instead, where there is
no path, and leave a trail."
--author unknown
More information about the Python-list
mailing list