Greg Ewing wrote: > Ian Bicking wrote: > >> ** can't be changed in this way, either -- it really has to enumerate >> all the keys in the thing passed to it, > > In Py3k this could perhaps be different in the case where > you're calling a function defined like > > def f(*args, **kwds): > ... > > In that case there are no named arguments to look up > in the dict, so when it's called using > > f(**obj) > > the obj could be passed straight through to the kwds > argument.
I thought of that, but that seemed much too clever. For instance, if you then change the signature to: f(a, **obj) Then it doesn't work anymore, because you have to test if a keyword of 'a' was passed in. ** in the signature and ** in the call are really not very symmetric. With current substitution this isn't that big a deal, because you have either positional *or* named markers (or for string.Template positional are not allowed), and if you see any named marker you assume you were passed a dictionary-like object. Some of the proposals that mix {1} with {name} in the same substitution are harder. Also, they have to look at the name of the marker and see if it is an integer, and thus a dictionary with a key like '1' cannot be used. -- Ian Bicking | [EMAIL PROTECTED] | http://blog.ianbicking.org _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com