[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