Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Windows 11 二月更新可能导致部分三星笔记本电脑用户无法访问 C 盘
#Bug
微软正在调查一个影响部分三星笔记本电脑的问题。这些用户在安装 2026 年 2 月安全更新后无法访问 C 盘,无法启动应用。微软表示正与三星合作以确定该问题是否与 Windows 更新或受影响设备上安装的三星软件有关。微软称,受影响用户会遭遇 C 盘无法访问,访问被拒绝的错误信息。该问题也阻止用户访问文件,启动 Outlook、Office、浏览器、系统工具和快速助手(Quick Assist)。问题主要发生在巴西、葡萄牙、韩国和印度,影响三星 Galaxy Book 4 等消费类设备。该问题可能与三星共享应用有关,但确切原因尚未确认。
https://www.bleepingcomputer.com/news/microsoft/microsoft-windows-11-users-cant-access-c-drive-on-some-samsung-pcs/
💀«Durov has died», «you will be killed tomorrow», «message not delivered», «access to the server has been completely terminated» — these scary messages were sent from the official Telegram account? These messages have been spreading since the launch of the Guest Mode functionality for bots. The most interesting thing is that the bot guest mode works not only in groups, but also in personal messages. And +42777 (and other support accounts) are also PMs.
🤖 At first, there was a #bug where forwarding messages from a PM sent by a bot with guest mode was attributed to your interlocutor — not a bot. You can imagine that a guy created his own bot where by writing " @yourbot" (without quotes) he sent a certain word specified in the script. 🔹 Now guest mode does not work in support, and the bug has been fixed — the authorship of forwarded messages is assigned correctly.
Source: 💌💌💌
Windows 11 一月更新可能导致部分 PC 无法启动
#Bug
根据微软的支持文档,Windows 11 一月安全更新可能导致部分 PC 无法启动,它正在收集用户和 IT 管理员的反馈。用户无需卸载此更新,因为该问题“仅限于”特定 PC。目前不清楚有多少用户受到影响,微软列出了两个受影响的平台:KB5074109 – Windows 11 25H2 和 KB5074109 – Windows 11 24H2。微软称,受影响的 PC 可能会突然停止启动,出现黑屏死机 (BSOD)错误,错误代码为 UNMOUNTABLE_BOOT_VOLUME。
https://admin.cloud.microsoft/Adminportal/Home?source=applauncher#/windowsreleasehealth/:/issue/WI1221934