O Python3.6 modificou o comportamento da concatenção do componentes conhecido como Literal String Interpolation.
Abaixo um caso de teste demonstrando qual é o método mais veloz e ágil para efetuar esta operação:
domain = ‘some_really_long_example.com’
lang = ‘en’
path = ‘some/really/long/path/’
Abaixo os métodos utilizados para concatenar:
f’http://{domain}/{lang}/{path}’ – 0.151 µs
‘http://%s/%s/%s’ % (domain, lang, path) – 0.321 µs
‘http://’ + domain + ‘/’ + lang + ‘/’ + path – 0.356 µs
”.join((‘http://’, domain, ‘/’, lang, ‘/’, path)) – 0.249 µs
No último exemplo é importante notar que utilizando tuple é um pouco mais rápido que utilizando lista mesmo com tamanho definido/fixo.
O código mais curto de ser escrito como visto acima, também é o código mais rápido para executar.
Na versão alpha do Python3.6, a implementação do f” é a mais lenta, com a ineficiência de implementação corrigida na versão final