#python #строки #форматирование
Например, мне надо задать строковую переменную, в которой надо указать номер потока.Есть два варианта.Первый - с помощью конкатенации: name="Thread #" + foo Второй - с помощью форматирования: name="Thread #%i" % foo Я знаю, что в python строки являются immutable типом, а значит операция конкатенации приведет к созданию новой переменной. А что на счет форматирования?
Ответы
Ответ 1
Конкантенация быстрее форматирования %. from timeit import default_timer as timer foo = 'FooBar' t = timer() for _ in range(100000): name = "Thread #" + foo print('Total time: {:.3f} sec'.format(timer() - t)) t = timer() for _ in range(100000): name = "Thread #%s" % foo print('Total time: {:.3f} sec'.format(timer() - t)) t = timer() for _ in range(100000): name = "Thread #{}".format(foo) print('Total time: {:.3f} sec'.format(timer() - t)) t = timer() for _ in range(100000): name = f"Thread {foo}" print('Total time: {:.3f} sec'.format(timer() - t)) Результат: Total time: 0.018 sec Total time: 0.029 sec Total time: 0.044 sec Total time: 0.018 secОтвет 2
Обычная конкатенация , судя результатам измерения в статье по ссылке, с помощью оператора '+' быстрее любых других в Python - https://tproger.ru/translations/speedy-string-concatenation-python/Ответ 3
Если вам нужно просто склеить две строки - используйте '+'. Если вам нужно склеить больше двух строк - используйте форматирование, как по мне - лучше str.format. Никогда не склеивайте строки через +=, лучше list + 'join'.
Комментариев нет:
Отправить комментарий