[Python-ideas] Outside the box string formatting idea
Vito De Tullio
vito.detullio at gmail.com
Mon Aug 10 07:40:20 CEST 2015
Ron Adam wrote:
>> How does this gain over
>>
>> def f(*args): return ''.join(args)
>> a='a'
>> b='b'
>> f(a, b)
>
> To make that work in the same way you would also need to add a way to
> handle string conversion of expressions and formatting.
> Lets look at this example...
>
> (% 'My name is ' name ', my age next year is ' (age+1)
> ', my anniversary is ' {anniversary ':%A, %B %d, %Y'} '.')
>
>
> Using functions and method calls it might become...
>
> >>> f = lambda *args: ''.join(args)
> >>> _ = format
> >>> import datetime
> >>> name = 'Fred'
> >>> age = 50
> >>> anniversary = datetime.date(1991, 10, 12)
>
> >>> f('My name is ', _(name), ', my age next year is ', _(age+1),
> ... ', my anniversary is ', _(anniversary, ':%A, %B %d, %Y'), '.')
>
> 'My name is Fred, my age next year is 51, my anniversary is :Saturday,
> October 12, 1991.'
> That isn't that much different and works today. A special format
> expression would remove some of the syntax elements and make it a
> standardised and cleaner looking solution.
what about a slightly different "f"?
def f(*args):
f_args = []
for arg in args:
if isinstance(arg, tuple):
f_args.append(format(*arg))
else:
f_args.append(format(arg))
return ''.join(f_args)
import datetime
name = 'Fred'; age = 50; anniversary = datetime.date(1991, 10, 12)
print(f('My name is ', name, ', my age next year is ', age+1,
', my anniversary is ', (anniversary, ':%A, %B %d, %Y'), '.'))
My name is Fred, my age next year is 51, my anniversary is :Saturday,
October 12, 1991.
--
By ZeD
More information about the Python-ideas
mailing list