[Python-Dev] Re: PEP 292, Simpler String Substitutions

Ka-Ping Yee ping@zesty.ca
Tue, 18 Jun 2002 21:36:51 -0700 (PDT)


On Tue, 18 Jun 2002, Barry A. Warsaw wrote:
> 	def birth(self, name):
> 	    country = self.countryOfOrigin['name']
> 	    return '${name} was born in ${country}'
>
> 	birth('Guido')
>
>     returns
>
> 	'Guido was born in the Netherlands'

I assume you in fact meant

	    return '${name} was born in ${country}'.sub()

for the third line above?

> 	print s.sub({'name': 'Guido',
> 		     'country': 'the Netherlands'})

Have you considered the possibility of accepting keyword arguments
instead?  They would be slightly more pleasant to write:

        print s.sub(name='Guido', country='the Netherlands')

This is motivated because i imagine relative frequencies of use
to be something like this:

    1.  sub()                      [most frequent]
    2.  sub(name=value, ...)       [nearly as frequent]
    3.  sub(dictionary)            [least frequent]

If you decide to use keyword arguments, you can either allow both
keyword arguments and a single dictionary argument, or you can
just accept keyword arguments and people can pass in dictionaries
using **.


-- ?!ng