Forwarded from karpov.courses
● Долгожданный match-case
Известно, что данную конструкцию всегда можно было заменить if-elif-else, но, согласитесь, при большом количестве вариантов код выглядел весьма громоздко. Теперь с помощью конструкции match-case мы избавляемся от ненужных повторов при сравнении с разными условиями. Ура, писать многоэтажные if стало ещё проще!
● Больше подробностей в ошибках
Если вы только встали на нелёгкий путь изучения Python, думаем, вы уже не раз сталкивались с сообщениями об ошибке. Теперь более явно указывается участок кода с ошибкой, а также появились подсказки, что же именно пошло не так и почему возникла ошибка. Например, если мы забыли закрыть скобку, сообщение об ошибке укажет на эту проблему, а не просто подчеркнёт место в коде, где нарушен синтаксис языка.
● Добавление новых статистических функций, работающих «из коробки», таких как correlation() и linear_regression()
Теперь проводить разведочный анализ стало проще, впрочем импортировать pandas всё ещё остается хорошей идеей.
С остальными улучшениями призываем познакомиться самостоятельно, попробовав поработать в новой версии Python!
Известно, что данную конструкцию всегда можно было заменить if-elif-else, но, согласитесь, при большом количестве вариантов код выглядел весьма громоздко. Теперь с помощью конструкции match-case мы избавляемся от ненужных повторов при сравнении с разными условиями. Ура, писать многоэтажные if стало ещё проще!
● Больше подробностей в ошибках
Если вы только встали на нелёгкий путь изучения Python, думаем, вы уже не раз сталкивались с сообщениями об ошибке. Теперь более явно указывается участок кода с ошибкой, а также появились подсказки, что же именно пошло не так и почему возникла ошибка. Например, если мы забыли закрыть скобку, сообщение об ошибке укажет на эту проблему, а не просто подчеркнёт место в коде, где нарушен синтаксис языка.
● Добавление новых статистических функций, работающих «из коробки», таких как correlation() и linear_regression()
Теперь проводить разведочный анализ стало проще, впрочем импортировать pandas всё ещё остается хорошей идеей.
С остальными улучшениями призываем познакомиться самостоятельно, попробовав поработать в новой версии Python!
Forwarded from Python Community
⚡️ Что такое
Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
Думаю, в нескольких ваших скриптах встречается строка по типу
Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
__all__
?Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
__all__
и как её использовать.Думаю, в нескольких ваших скриптах встречается строка по типу
from package import *
, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
__all__
имена доступных типов.Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
Forwarded from Python Community
⚡️ Добавляем время в программу
Модуль time позволяет замерять время выполнения кода, может заморозить программу, а также позволяет узнать текущее время.
Первую задачу выполняет функция
А вот выводом времени занимается метод
Подробнее почитать о модуле можно на сайте документации.
#миниурок #time
Модуль time позволяет замерять время выполнения кода, может заморозить программу, а также позволяет узнать текущее время.
Первую задачу выполняет функция
time()
, которая возвращает время в секундах. Для заморозки приложения используют команду sleep(seconds)
.А вот выводом времени занимается метод
strftime()
, который выводит структуру, полученную, например, из gmtime()
в определённом формате. Подробнее почитать о модуле можно на сайте документации.
#миниурок #time
Forwarded from Python Community
⚡️ Что такое
Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку
Файлы с расширением .pyc и .pyo — это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.
#теория
__pycache__
На этот раз, это не переменная, а папка, внутри которой хранятся файлы .pyc и .pyo. Зачем она нужна можно почитать в PEP 3147, а здесь будет краткое объяснение.Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку
__pycache__
. Это сделано в целях оптимизации и, чтобы, модули быстрее импортировались.Файлы с расширением .pyc и .pyo — это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.
#теория
Forwarded from Python Community
⚡️ Работаем с логами
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
logging.getLogger(name=None)
— возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.logging.basicConfig(**kwargs)
— позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).debug()
, info()
, warning()
, error()
, critical()
— позволяют записывать информацию в логер на определённом уровне важности.О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Forwarded from Python Community
⚡️ Что такое
Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
Думаю, в нескольких ваших скриптах встречается строка по типу
Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
__all__
?Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
__all__
и как её использовать.Думаю, в нескольких ваших скриптах встречается строка по типу
from package import *
, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
__all__
имена доступных типов.Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
Forwarded from Python Community
⚡️ Работаем с логами
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
logging.getLogger(name=None)
— возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.logging.basicConfig(**kwargs)
— позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).debug()
, info()
, warning()
, error()
, critical()
— позволяют записывать информацию в логер на определённом уровне важности.О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Forwarded from Python Community
⚡️ Очередь с приоритетом
Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.
#миниурок #heapq
Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.
heappush(heap, value)
— добавляет value в heap, сохраняя инвариантность кучи.heappop(heap)
— возвращает наименьшее значение из heap. heapify(x)
— превращает итерируемый объект x в кучу.nsmallest(n, iter)
, nlargest(n, iter)
— позволяют взять n-ное количество минимальных/максимальных элементов из iter.#миниурок #heapq
Forwarded from Python Community
⚡️ Красивый вывод данных
Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.
indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).
#миниурок #pprint
Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.
PrettyPrinter(indent=1, width=80, depth=None, stream=None)
— Класс, отвечающий за перевод данных в красивый формат. indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).
pprint.pprint(object, ...)
— функция, упрощающая работу с классом. Принимает object, который необходимо вывести и те же параметры, что и PrettyPrinter.#миниурок #pprint
Forwarded from Python School
Красивый вывод списка (ч.1)
Обычный формат вывода списка с помощью print не очень удобен. Конечно, становится понятно, что из себя представляет список, но чаще всего пользователь не хочет видеть кавычки вокруг каждого элемента.
Метод join преобразовывает список в строку, рассматривая каждый элемент как строку.
Обычный формат вывода списка с помощью print не очень удобен. Конечно, становится понятно, что из себя представляет список, но чаще всего пользователь не хочет видеть кавычки вокруг каждого элемента.
Метод join преобразовывает список в строку, рассматривая каждый элемент как строку.
Forwarded from Python School
Queue (ч.1)
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Forwarded from Python School
Queue (ч.2)
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
Forwarded from Python School
Подсчет вхождений в список
Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке
Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке
Forwarded from Python Community
⚡️ Файлы конфигурации
Вряд ли клиент захочет лезть в код, чтобы поменять порт сервера, поэтому многие программисты создают файлы конфигурации. Работать с ними можно с помощью модуля configparser.
Брать информацию можно используя квадратные скобки или, лучше, методом
Если вы изменили какие-то данные и хотите их сохранить, впишите метод
#миниурок #configparser
Вряд ли клиент захочет лезть в код, чтобы поменять порт сервера, поэтому многие программисты создают файлы конфигурации. Работать с ними можно с помощью модуля configparser.
ConfigParser()
— основной класс для работы с конфигами. Его можно оставить так, а можно загрузить данные, используя метод read(filename)
, который принимает имя файла.Брать информацию можно используя квадратные скобки или, лучше, методом
get(key, default=None)
.Если вы изменили какие-то данные и хотите их сохранить, впишите метод
write(file)
, который принимает IO файл.#миниурок #configparser
Forwarded from Gmail Bot
✉️ Timepad <no-reply@timepad.ru>
Ссылка на трансляцию онлайн-события
Добрый день!
Напоминаем вам, что *8 июля 2021* c *18:00* до *21:00* (московское время) пройдет онлайн-событие *«Python Community Online Meetup»* , на которое вы зарегистрировались.
Вот ваша персональная ссылка на трансляцию: https://raiffeisen-events.timepad.ru/event/webinar_redirect/46853564/3febc73dab0511f65201218e3ef6cf6e95286e87/
Можно переходить уже сейчас и ждать начала.
Timepad
Организуете события? Привлекайте участников и продавайте билеты на timepad.ru. Присоединяйтесь к нам на Facebook и ВКонтакте Служба поддержки:
support@timepad.ru
+7 (495) 212–16–98 (Москва)
8 (800) 300–69–84 (по России)
Время работы (московское):
с 9:00 до 20:00 по будням
с 10:00 до 18:00 по выходным
Ссылка на трансляцию онлайн-события
Добрый день!
Напоминаем вам, что *8 июля 2021* c *18:00* до *21:00* (московское время) пройдет онлайн-событие *«Python Community Online Meetup»* , на которое вы зарегистрировались.
Вот ваша персональная ссылка на трансляцию: https://raiffeisen-events.timepad.ru/event/webinar_redirect/46853564/3febc73dab0511f65201218e3ef6cf6e95286e87/
Можно переходить уже сейчас и ждать начала.
Timepad
Организуете события? Привлекайте участников и продавайте билеты на timepad.ru. Присоединяйтесь к нам на Facebook и ВКонтакте Служба поддержки:
support@timepad.ru
+7 (495) 212–16–98 (Москва)
8 (800) 300–69–84 (по России)
Время работы (московское):
с 9:00 до 20:00 по будням
с 10:00 до 18:00 по выходным
Forwarded from iggisv9t channel
Вот так вот в исходниках CDlib. Просто по порядку пытается импортировать все пакеты. Пакет с пакетами, получается.
Forwarded from Python Academy
Валидаторы данных
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
Помимо этого,
#validators
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
validators
позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.Помимо этого,
validators
позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.#validators
Forwarded from Python Academy
Аннотация типов
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой
В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур
И наконец в 3.10 на замену перечисления возможных принимаемых типов через
#typing #typealias
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой
typing
, в которой содержались структуры нужные для создания дженериков для аннотирования переменных. Тогда синтаксис аннотирования работал при инициализации переменных. В последствии в версии 3.6 эта возможность была расширена и стало возможно объявлять типы переменных вообще в любом месте кода.В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур
typing
'а (List
, Dict
, Tuple
...).И наконец в 3.10 на замену перечисления возможных принимаемых типов через
typing.Union
пришел опреатор |
(or
). Также в 3.10 был изменен синтаксис создания тайпалиасов, чтобы разграничить с присваиванием переменной, теперь лучше это делать непосредственно через TypeAlias
.#typing #typealias