Python академия
7.75K subscribers
2.27K photos
5 videos
265 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Ключевое слово nonlocal

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

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

Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости.

Подписывайтесь на канал 👉@pythonofff
Управление тем, что может быть импортировано из модуля, а что — нет

В некоторых языках имеются предельно чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. Например — в Golang экспортируются лишь сущности, имена которых начинаются с большой буквы. В Python же экспортируется всё. Но лишь до тех пор, пока не используется атрибут all

Подписывайтесь на канал 👉@pythonofff
Создаем словарь из набора ключей

Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).

Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.

Подписывайтесь на канал 👉@pythonofff
Экономия памяти с помощью slots

Эта функция хорошо сказывается на производительности, но, с точки зрения потребления памяти, это неэффективно. Обычно, правда, проблем эта особенность не вызывает. Однако если вы столкнулись в подобной ситуации с нехваткой памяти — можете попробовать воспользоваться атрибутом slots

Подписывайтесь на канал 👉@pythonofff
Пакеты

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

При импорте from package import * будут подключены либо все модули и объекты модуля __init__.py, либо то, что находится в переменной __all__ в том же модуле __init__.py.

Еще примечателен файл __init__.py, который раньше был обязателен для создания пакетов. Но с версии Python 3.3 его необходимость пропала. Однако его функциональность на этом не заканчиваются.

Подписывайтесь на канал 👉@pythonofff
Функция slots

Если вы когда-нибудь писали программы, которые создают по-настоящему большие количества экземпляров некоего класса, то вы могли заметить, что таким программам неожиданно может понадобиться очень много памяти. Происходит это из-за того, что Python использует словари для представления атрибутов экземпляров классов.

Подписывайтесь на канал 👉@pythonofff
Оператор объединения словарей

В Python есть много разных способов объединить несколько словарей. Мне, например, больше всего нравилась распаковка словарей в один новый.

Но в одном из последних обновлений добавили специальный оператор |, с помощью которого можно это делать ещё проще.

Подписывайтесь на канал 👉@pythonofff
Итерация по Списку в Python С Помощью Метода Enumerate

Если вы не знаете, что именно enumerate делает в python, то позвольте мне объяснить вам.Метод enumerate() добавляет счетчик к итерируемому объекту и возвращает его. И что бы ни возвращал метод enumerate, это будет объект enumerate.

Основное преимущество использования метода enumerate заключается в том, что вы можете преобразовать объекты enumerate в list и tuple с помощью методов list() и tuple() соответственно.

Подписывайтесь на канал 👉@pythonofff
Частичное применение

Сегодня поговорим об одном интересном концепте из области функционального программирования. Использовать будем функцию partial из стандартной библиотеки functools.

Предоставление функции меньшего количества аргументов, чем она ожидает, называется частичным применением функций.

Другими словами, это такая функция, которая принимает другую функцию с несколькими параметрами и возвращает функцию, но уже с меньшим количеством параметров.

Подписывайтесь на канал 👉@pythonofff
PiP

Пип это то, что, возможно, большинство людей знают. Но все же это потрясающий материал, который вам нужно знать, если вы начинаете с python. Иногда вам нужно проверить источник пакета перед его установкой. В большинстве случаев это для установки более новой версии какого-либо пакета.

Подписывайтесь на канал 👉@pythonofff
Вызов программ операционной системы

sh — это полноценный интерфейс, как альтернатива subprocess, который позволяет вызывать любую программу, как если бы это была обычная функция.
Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.

sh полагается на системные вызовы Unix и работает только в Unix-подобных операционных системах, т.е. данный модуль не подойдет для работы с Windows.
Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции.

Также в модуле реализована функция which, которая находит полный путь до программы либо возвращает None, если программа не найдена.

Подписывайтесь на канал 👉@pythonofff
Объединение скриптов Python и Shell

Теперь это то, что вы не можете сделать с C или C ++. Если вы парень с открытым исходным кодом, то вы наверняка используете Linux в качестве основной операционной системы или, по крайней мере, двойную загрузку. Итак, Linux уже включает Python. И python чрезвычайно совместим с Linux. Это дает нам преимущество их компиляции и объединения. Вы можете просто создать сценарий, который может работать как обычный сценарий Unix, а также интерпретируемый код Python одновременно.

Подписывайтесь на канал 👉@pythonofff
​​Находим схожие строки

В стандартной библиотеке Python существует модуль difflib, в котором есть интересный метод get_close_matches. Он позволяет найти в списке строки, похожие на некую исходную.

Этот метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент — список, в котором выполняется поиск.

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

Подписывайтесь на канал 👉@pythonofff
Как найти наиболее частотные элементы с помощью счетчика

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

Counter().most_common([n])

Подписывайтесь на канал 👉@pythonofff
Аргументы и параметры командной строки

Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль argparse.

Для начала нам нужно создать объект парсера ArgumentParser, в который мы уже сможем добавить аргументы с нужными параметрами с помощью метода add_argument.

Первым параметром add_argument принимает либо имя обязательного позиционного аргумента, либо список опционального аргумента (опциональный аргумент идентифицируется через -). Также у add_argument есть множество необязательных опциональных параметров для работы с передаваемым значением аргумента, о них можете почитать в данной статье.

После добавления всех аргументов, нам нужно их спарсить с помощью метода parse_args, на выходе мы получим объект со всеми содержащимися аргументами.

Подписывайтесь на канал 👉@pythonofff
Извлечение аудио из видеофайлов

Бывает так, что у нас есть mp4-файл, но нам нужна только звуковая дорожка из него. Скажем, чтобы сделать другое видео с таким же звуковым сопровождением. Эта проблема решается установкой библиотеки moviepy.

Подписывайтесь на канал 👉@pythonofff
Методы у словарей

В этом посте поговорим про 3 простых метода у словарей, которые позволяет получить элементы в разном виде.

С помощью метода dict.keys() можно получить ключи словаря в виде списка, dict.values() — то же самое, но со значениями.

А метод dict.items() возвращает список из кортежей, которые содержат ключи и соответствующие значения.

Подписывайтесь на канал 👉@pythonofff
Поиск в Google без открытия браузера

Порой мы так глубоко погружаемся в написание кода, что нам неохота открывать браузер для поиска нужной информации. Установив потрясающую библиотеку google, можно делать запрос в поисковик прямо в консоли.

Подписывайтесь на канал 👉@pythonofff
Как удалить несколько ключей из словаря Python

Python позволяет легко удалить из словаря не только один определенный ключ, но и несколько. Самый безопасный способ сделать это — перебрать список ключей и использовать метод .pop().

Подписывайтесь на канал 👉@pythonofff
3 интересных функции в random

Этот пост более для тех, у кого есть соответствующий бэкграунд и кто хочет знать про random больше среднего.

betavariate() — используется для получения случайного числа с плавающей запятой от 0 до 1 на основе бета-распределения (применяется для статистических расчетов).

gauss() — генерирует случайное число с плавающей запятой на основе распределения Гаусса (используется в теории вероятности).

paretovariate() — возвращает случайное число с плавающей запятой на основе распределения Парето (используется в теории вероятности).

Подписывайтесь на канал 👉@pythonofff
Создаем бесконечный итератор

Функция cycle() из itertools принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта.

Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента.

Но если вы проходитесь циклом по такому итератору, то важно предусмотреть выход из цикла, иначе он станет бесконечным (как у нас в первом случае на картинке).

Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.

Подписывайтесь на канал 👉@pythonofff