Python Community
12.9K subscribers
1.25K photos
38 videos
15 files
738 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
Что выведет код выше?
Anonymous Quiz
23%
aa bb
41%
aabb
2%
aa/nbb
30%
Ошибку
3%
Узнать ответ
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Профилируем код

В этот раз мы рассмотрим профилировщик под именем py-spy, позволяющий отслеживать потребление ресурсов, не редактируя код.

Установка: pip install py-spy

Давайте поговорим о командах, которые используются в скрипте: все они вызываются с параметром --pid.

py-spy top — отображает нагрузку на процессор. Очень похожа на команду top из Unix.

py-spy record — записывает использование ресурсов в svg файл.

py-spy dump — собирает стек вызовов и выводит на консоль.

На гиф — результат работы первой команды. Если вам стало интересно, то можете посетить github страницу проекта.

#миниурок #pyspy
⚡️ Бесконечные итераторы

Продолжаем рассказывать про итераторы, а если быть конкретнее, про модуль itertools. itertools — модуль, хранящий в себе множество готовых итераторов, как, например, groupby.

count(start, step=1) — итератор, считающий от start, добавляя step до бесконечности. Он чем-то напоминает range, но без ограничений.

cycle(elems) — бесконечное количество раз возвращает элементы внутри elems по порядку.

repeat(elem, n) — возвращает n раз или бесконечно значение elem.

#миниурок #itertools
⚡️ Задачка с собеседования | #Easy

Условие:

Ваша задача — написать функцию, которая превращает строку в hashtag. У них есть парочка правил: никаких символов из string.punctuation быть не должно, пробелы отсутствуют, а длина обязана быть не более 140 символов. Если последнее правило нарушено, выбрасываем ошибку.

Примеры:

gen_hashtag('Python Community') -> #PythonCommunity
gen_hashtag('i like python community!') ->
#ILikePythonCommunity
gen_hashtag('Should, I. subscribe? Yes!') ->
#ShouldISubscribeYes

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
👍1
⚡️ Ответ на предыдущую задачу
⚡️ Замеряем время выполнения программы

Многие новички используют time или встроенные в ОС приложения, но это не верно. Лучше использовать timeit, поскольку он может более точно рассчитать, сколько занимает выполнение кода, независимо от ОС.

Он довольно прост в использовании. Всего пару строк, и вы можете доказать, что код админа медленнее вашего решения :)

timeit.timeit(code, setup='', timer, number=1_000_000) — запускает код number раз. Но перед этим выполняет строку setup, которая не входит в время, измеряемое таймером. Эта основная функция больше вам не понадобится.

Если вам лень запускать IDE, можете воспользоваться терминалом, вписав python3 -m timeit "print('Hello world')".

А если вам стало интересно, то можете посетить страницу документации.

#миниурок #timeit
3 причины подписаться на аккаунт @selectel 🔥

1. Основы программирования простым языком и без снобизма.
2. Полезные факты о железе, дата-центрах и хостингах.
3. Актуальные новости из IT.

Жми «Подписаться», чтобы получать больше IT-материалов и каждый день узнавать что-то новое!
⚡️ Продолжаем рассматривать модуль itertools

Думаю, стоит вам ещё рассказать про этот модуль и интересные функции. Начнём!

zip_longest(a, b, fill_value) — очень удобный итератор. Работает также как и zip, но если длина списков разная, заполняет их fill_value.

takewhile(func, seq) — возвращает значения из seq, пока func не вернёт False.

chain(a, b,...) — соединяет два и более итерируемых объектов в один.

product(a, b...) — декартово произведение итерируемых объектов.

#миниурок #itertools