[Python-de] strings zusammensetzen.

Walter Dörwald walter at livinglogic.de
Di Aug 29 11:21:15 EDT 2017


On 26 Aug 2017, at 13:29, Peter Otten wrote:

> Tobias Herp wrote:
>
>>> d = "{base}{revision}{suffix}".format(base = a,
>>> revision = b,
>>> suffix = c)
>>
>> Wenn's denn unbedingt ein Template sein soll, würde das bei mir 
>> meistens
>> wie folgt aussehen:
>>
>> d = '%(base)s%(revision)s%(suffix)s' % locals()
>>
>
> Wurde schon erwähnt, dass ab 3.6 alternativ dazu auch
>
>>>> base, revision, suffix = "foo", "bar", "baz"
>>>> f"{base}{revision}{suffix}"
> 'foobarbaz'
>
> möglich ist?
>
> Das vermeidet ggf. das Erstellen eines temporären dicts.

Das ist auch mit Abstand die schnellste Variante:

Python 3.6.2 (default, Jul 26 2017, 16:42:24)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
In [1] ▶ base, revision, suffix = "foo", "bar", "baz"
In [2] ▶ %timeit base + revision + suffix
208 ns ± 0.532 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops 
each)
In [3] ▶ %timeit '%s%s%s' % (base, revision, suffix)
315 ns ± 1.55 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops 
each)
In [4] ▶ %timeit '{}{}{}'.format(base, revision, suffix)
462 ns ± 1.23 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops 
each)
In [5] ▶ %timeit f'{base}{revision}{suffix}'
14.6 ns ± 0.00911 ns per loop (mean ± std. dev. of 7 runs, 100000000 
loops each)

Servus,
    Walter


Mehr Informationen über die Mailingliste python-de