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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Модуль collections. Тип namedtuple

Часто, используя кортежи, мы берём значения с помощью индексаторов (квадратных скобочек), что выглядит не особо красиво и совсем непонятно для другого программиста.

Чтобы исправить эту проблему, Python разработчики придумали namedtuple, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.

namedtuple(typename, field_names) — создаёт тип кортежа с именем typename и атрибутами field_names, и возвращает тип.

#миниурок #collections
Что выведет код выше?
Anonymous Quiz
27%
5
38%
6
15%
7
7%
9
14%
Узнать ответ
⚡️ Редактируем видео

Модуль moviepy позволяет быстро и просто обрабатывать видео: склеивать, обрезать, сжимать, переворачивать и выполнять множество других операций.

Установка: pip install moviepy

Библиотека требует от пользователя минимум кода и имеет хорошую документацию, поэтому освоить её не составит труда. На примере выше мы просто склеиваем два видео в одно и рендерим его.

Стоит отметить, что модуль использует процессор, а не видеокарту для рендера. Поэтому, если вам нужно больше мощностей воспользуйтесь выделенными серверами с большей производительностью.

Если он вас заинтересовал, то можете посмотреть парочку примеров её работы.

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

Условие:

Ваша задача — написать функцию, которая проверяет, правильно ли записаны скобочки в полученной строке. Строка состоит только из символа "(" и ")", никаких проверок делать не нужно.

Примеры:

solution('()') -> True
solution(')()') -> False
solution('(') -> False
solution('(())((()())())') -> True

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

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

Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?

Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода __next__.

Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.

#теория
Что выведет код выше?
Anonymous Quiz
31%
aabb
22%
aa bb
2%
aa\nbb
42%
Ошибку
3%
Узнать ответ
⚡️ Методы генераторы

В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три: close, throw, send.

close() — останавливает генератор на следующем проходе.

throw() — выводит ошибку на экран и останавливает выполнение генератора сразу же. С помощью них можно контролировать бесконечные генераторы.

send() — самый интересный метод. Позволяет передавать значения генератору. Первым всегда должно быть None, что бы запустить его.

С помощью send, к слову, создают корутины — функции, которым можно передавать значения, останавливать и возобновлять работу программы.

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

Условие:

Ваша задача — написать функцию, которая перемножает все цифры некого числа num, пока оно не станет меньше 9. Число всегда больше нуля.

Примеры:

persist(999) -> 2
# 999 -> 9 * 9 * 9 = 729 -> 7 * 2 * 9 = 126 -> 1 * 2 * 6 = 12 -> 1 * 2 = 2
persist(1000) -> 0
persist(423) -> 8
persist(1) -> 1

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

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

Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "PEP 8", в котором описывались правила оформления кода.

Но хранить их все в голове довольно тяжело, поэтому придумали flake8 — скрипт, что позволяет проверить программу на стилистические ошибки.

Установка: pip install flake8

Запускается скрипт довольно просто, достаточно вписать в терминал flake8 file1.py file2.py или flake8 folder_name.

Также вы можете задавать свои настройки — подробнее можно почитать на сайте документации.

#миниурок #flake8
Что выведет код выше?
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

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

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