Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
from timeit import timeit
def t1():
# складываем 10 строк через + из переменной
t = 'text'
for _ in range(1000):
s = t + t + t + t + t + t + t + t + t
def t2():
# склеиваем список строк через метод join
arr = ['text'] * 10
for _ in range(1000):
s = ''.join(arr)
def t3():
# складываем через + но не из переменной а непосредственно инлайн объекты
for _ in range(1000):
s = 'text' + 'text' + 'text' + ... # всего 10 раз
Теперь каждую строку склейки запустим по 10М раз
>>> timeit(t1, number=10000)
0.21951690399964718
>>> timeit(t2, number=10000)
1.4978306379998685
>>> timeit(t3, number=10000)
0.2213820789993406
Хм, а нам говорили что через "+" это плохо и медленно ))) 😁
Тут стоит учитывать, что речь идёт о склейке множества длинных строк.
Давайте изменим условия:
def t4():
t = 'text'*100
for _ in range(1000):
s = t + t + t + t + t + t + t + t + t
def t5():
arr = ['text'*100] * 10
for _ in range(1000):
s = ''.join(arr)
def t6():
for _ in range(1000):
s = 'text'*100 + 'text'*100 + ... # всего 10 раз
>>> timeit(t4, number=10000)
12.795130728000004
>>> timeit(t5, number=10000)
2.642637542999182
>>> timeit(t6, number=10000)
0.2184546610005782
Вот, уже другой разговор, сразу видна разница, в среднем в 6 раз. Но погодите, почему последний тест t6() по скорости такой же как и t3()? Ведь строки теперь в 100 раз длиннее!
Это вопросы оптимизации кода, какие простые изменения ускоряют или замедляют выполнение программы. Мы столкнулись с примером обхода обращения к переменной. Например, именно так работает директива #define в С++, во время компиляции подставляя значение переменной вместо ссылки на неё.
В Python это тоже работает, но часто ли вы сможете встретить такой способ работы со строками? К сожалению, способ почти только теоретический.
В целом, тесты показали то, что мы хотели. Делаем выводы самостоятельно.
Полный листинг 🌍
#tricks
🇫🇷The presence of 4 thousand French soldiers in the Gaza war
Thomas Bourtes, a member of the #French parliament, announced that more than 4,000 French citizens are participating in the Israeli army in the war against Gaza.
La présence de 4 mille soldats français dans la guerre à Gaza
Thomas Bourtes, député français, a annoncé que plus de 4 000 citoyens français participent à l'armée israélienne dans la guerre contre Gaza.
https://t.me/YediotNewsChat
Еще одна полезная рекомендация для french learners:
https://youtube.com/playlist?list=PLycTNLUo2y2EAKEhVfxB9gYo6r0OTMgM0&si=SBoZIA4aZQhFpzMl
Очень классный подкаст, легко понять и даже есть транскрипт, если слушать на сайте
#french
Я довольно неплохо понимаю текста, которые читаю на французском и после этого фото поняла почему😆
Но я понимаю, что словарный запас надо расширять, поэтому решила, что буду больше читать. С английским было так же, больше всего слов я выучила после фокуса на чтение
#french
#Rap#French
Manau le curé et les Loups
It speaks of a priest guarding a village against a wolf pack, the priest speaks of his regrets and the things he would have liked to do in his life.
In the end, as the sun clears the night, the villagers find the priest dead, killed by the wolves as he was protecting the village.
https://youtu.be/UEpzez_H2CI
After calling the #Hijab “a symbol of women’s submission to men”, #French Interior Minister continues his #Islamophobic comments, calling the Hijab “a sign of inferiority.”
#Op_ed: #Djibouti: Pillar of stability, not a "rentier fortress" in decline
In a rebuttal to an op-ed titled "Crumbling of Rentier Fortress: Ethiopia’s Maritime Pivot, Decline of Djibouti’s Monopoly," Naguib Ali Taher, Communications Officer for the Republic of Djibouti, firmly rejects the characterization of his nation as a “crumbling rentier fortress.” He dismisses the portrayal as both “inaccurate and dismissive,” arguing that it misrepresents the geopolitical reality of the Horn of Africa.
Taher contends that Djibouti remains “an undeniable bedrock of stability” within a volatile region—a status validated by the presence of major #American, #French, #Chinese, and #Japanese military installations.
The author further brushes aside accusations of authoritarianism and regional meddling, labeling them "tabloid-style slander."
https://addisstandard.com/?p=55291
#Vocabee#Snap#amp#Learn#French
Join the Vocabee: Snap & Learn French beta on ✈️#TestFlight
🔗 Link: https://testflight.apple.com/join/tAwWnF8e
Shared by Dimitri