Fstrings
Jeśli używasz Python 3.6+
można skorzystać z nowej tzw f-strings
co oznacza sformatowanych ciągów i może być stosowany przez dodanie znaku f
na początku ciąg znaków identyfikujący to jako f-string.
price = 123
name = "Jerry"
print(f"{name}!!, {price} is much, isn't {price} a lot? {name}!")
>Jerry!!, 123 is much, isn't 123 a lot? Jerry!
głównych zalet korzystania z F-ciągi jest to, że są one bardziej czytelne, może być szybsze i oferują lepszą wydajność:
Źródło Pandy dla wszystkich: Python Analiza danych, przez Daniela Y. Chen
Benchmarki
nie ulega wątpliwości, że nowa f-strings
są bardziej czytelne, jak nie masz do przemapować sznurki, b ut jest jednak szybszy, jak stwierdzono we wspomnianym cytacie?
price = 123
name = "Jerry"
def new():
x = f"{name}!!, {price} is much, isn't {price} a lot? {name}!"
def old():
x = "{1}!!, {0} is much, isn't {0} a lot? {1}!".format(price, name)
import timeit
print(timeit.timeit('new()', setup='from __main__ import new', number=10**7))
print(timeit.timeit('old()', setup='from __main__ import old', number=10**7))
> 3.8741058271543776 #new
> 5.861819514350163 #old
Running 10 milionów na badania wydaje się, że nowy f-strings
są rzeczywiście szybciej w mapowaniu.
Duplikat: http://stackoverflow.com/questions/543399/python-string-formatowanie – bignose
Ten operator '%' będzie "wycofany w Pythonie 3.1 i później usunięty w pewnym momencie" http: //docs.python .org/release/3.0.1/whatsnew/3.0.html # pep-3101-a-nowe-podejście-do-formatowania tekstu teraz zastanawiam się, jaki jest najbardziej zalecany sposób zarówno kompatybilności wersji, jak i bezpieczeństwa. – cregox
@Cawas Wiem, że jest dość późno, ale lubię używać 'str.format()'. Przykład: 'query =" SELECT * FROM {named_arg} "; query.format (** kwargs) ', gdzie' query' to ciąg formatu, a 'kwargs' to słownik z kluczami pasującymi do' named_arg's w ciągu formatującym. – Edwin