Forwarded from Python Academy
Создаем контекстный менеджер с помощью декоратора
Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов:
Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор
Первая часть функции
#contextlib
Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов:
__enter__
и __exit__
. Но такой подход может показаться слегка сложным.Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор
@contextmanager
из встроенного пакета contextlib
.Первая часть функции
tag
, которая идёт до yield
, выполняется при входе в блок with
. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield
.#contextlib
Forwarded from Python Academy
Редирект вывода программы
В
Контекстный менеджер принимает аргумент, в котором мы можем указать, куда должен переправляться весь вывод в последующем блоке.
Таким образом, данные из
Убедится в этом можем, открыв файл заново и прочитав оттуда данные.
#contextlib
В
contextlib
есть еще один прикольный контекстный менеджер — redirect_stdout
, позволяющий перенаправить стандартный вывод программы.Контекстный менеджер принимает аргумент, в котором мы можем указать, куда должен переправляться весь вывод в последующем блоке.
Таким образом, данные из
print()
в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout
.Убедится в этом можем, открыв файл заново и прочитав оттуда данные.
#contextlib
Forwarded from Python Academy
ООП: композиция
Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.
Как правило, в этом случае объект одного из классов (в примере выше это
Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора.
В таком случае необходимо использовать слабые ссылки из модуля
#классы #ооп
Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.
Как правило, в этом случае объект одного из классов (в примере выше это
Salary
) является полем другого (Employee
). Сложного здесь, как вы видите, ничего нет.Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора.
В таком случае необходимо использовать слабые ссылки из модуля
weakref
, о котором поговорим позже.#классы #ооп
Forwarded from Python Academy
Считаем ссылки на объект
В Python практически никогда не нужно волноваться об управлении памятью, потому что все это делается автоматически.
Счетчик ссылок — это то, что помогает при проверке того, следует ли выполнять сборку мусора или нет. Сборщик мусора удаляет объект из памяти в случае, если на него ничего не ссылается.
Если на объект ссылается другой объект, то он имеет ненулевое значение ссылок и не может быть собран как мусор (если, конечно, вы не удалите вручную).
В примере выше продемонстрирован простой способ, как можно посмотреть количество ссылок у объекта.
#ctypes
В Python практически никогда не нужно волноваться об управлении памятью, потому что все это делается автоматически.
Счетчик ссылок — это то, что помогает при проверке того, следует ли выполнять сборку мусора или нет. Сборщик мусора удаляет объект из памяти в случае, если на него ничего не ссылается.
Если на объект ссылается другой объект, то он имеет ненулевое значение ссылок и не может быть собран как мусор (если, конечно, вы не удалите вручную).
В примере выше продемонстрирован простой способ, как можно посмотреть количество ссылок у объекта.
#ctypes
Forwarded from Python Academy
Пакетный менеджер pip
Для работы с пакетами в Python есть специальная утилита
Установить или удалить пакет можно через команды
Команды
А с помощью
#pip
Для работы с пакетами в Python есть специальная утилита
pip
— устанавливается она сразу вместе с интерпретатором.Установить или удалить пакет можно через команды
install
и uninstall
. После них нужно перечислить необходимые пакеты через пробел.Команды
list
и freeze
покажут все пакеты в текущем окружении, а также их версии. Обратите внимание на то, как выглядит вывод каждой из них.А с помощью
show
можно посмотреть информацию о конкретном пакете: название, версию, описание, автора, лицензию и другое.#pip
Forwarded from Python Academy
Ключевое слово nonlocal
Похожее по функционалу на global, ключевое слово
Поведение
Основное различие с
#переменные #nonlocal
Похожее по функционалу на global, ключевое слово
nonlocal
позволяет обращаться к переменным из нелокальной области видимости.Поведение
nonlocal
заключается в том, что интерпретатор ищет переменную в ближайшей области видимости.Основное различие с
global
в том, что с помощью nonlocal
нельзя получить переменные из глобальной области видимости.#переменные #nonlocal
Forwarded from Python Academy
Работаем со временем без головной боли
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много:
— В них слишком много типов:
И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип
Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал
Еще из приятных бонусов: там есть функция
#время #arrow
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много:
datetime
, time
, calendar
, dateutil
, pytz
и другие; — В них слишком много типов:
date
, time
, datetime
, tzinfo
, timedelta
, relativedelta
и т. д. И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип
Arrow
. Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал
datetime
в Arrow
и обратно. Еще из приятных бонусов: там есть функция
humanize
, которая конвертирует время в читаемый текст. #время #arrow
Forwarded from Python Academy
Вызов программ операционной системы
sh — это полноценный интерфейс, как альтернатива
Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.
Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции.
Также в модуле реализована функция
#sh
sh — это полноценный интерфейс, как альтернатива
subprocess
, который позволяет вызывать любую программу, как если бы это была обычная функция. Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.
sh
полагается на системные вызовы Unix и работает только в Unix-подобных операционных системах, т.е. данный модуль не подойдет для работы с Windows.Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции.
Также в модуле реализована функция
which
, которая находит полный путь до программы либо возвращает None
, если программа не найдена.#sh
Forwarded from Python Community
⚡️ Отсутствующие элементы в словаре
Словари довольно часто используются в работе, и вместо того, чтобы каждый раз получать ошибку при несуществующем ключе, можно просто переопределить её поведение.
В словарях вызывается метод
Примерно так же, как и на фото выше, реализован класс defaultdict из модуля collections.
#теория
Словари довольно часто используются в работе, и вместо того, чтобы каждый раз получать ошибку при несуществующем ключе, можно просто переопределить её поведение.
В словарях вызывается метод
__missing __
, если ключа не существует, но унаследовав класс от dict и переопределив метод, мы можем изменить реакцию программы на отсутствующий ключ.Примерно так же, как и на фото выше, реализован класс defaultdict из модуля collections.
#теория
Forwarded from HABR FEED + OPENNET
#news Открытый вебинар «The Python Packaging»23 сентября в 16:30 в рамках цикла открытых технических семинаров компании Xperi
https://habr.com/ru/news/t/579264/?utm_campaign=579264&utm_source=habrahabr&utm_medium=rss
Tags: Python, C++, pip, virtualenv, c++, cuda
https://habr.com/ru/news/t/579264/?utm_campaign=579264&utm_source=habrahabr&utm_medium=rss
Tags: Python, C++, pip, virtualenv, c++, cuda
Хабр
Открытый вебинар «The Python Packaging»
23 сентября в 16:30 в рамках цикла открытых технических семинаров компании Xperience AI с докладом выступит Григорий Серебряков (CTO, Xperience AI). Тема доклада - The Python packaging. "The Python...
Forwarded from HABR FEED + OPENNET
#news Открытый вебинар «Асинхронное программирование на Python для начинающих»
https://habr.com/ru/news/t/579268/?utm_campaign=579268&utm_source=habrahabr&utm_medium=rss
Tags: Блог компании KTS, Python, Учебный процесс в IT, асинхронное программирование, backend, frontend, devops
https://habr.com/ru/news/t/579268/?utm_campaign=579268&utm_source=habrahabr&utm_medium=rss
Tags: Блог компании KTS, Python, Учебный процесс в IT, асинхронное программирование, backend, frontend, devops
Хабр
Открытый вебинар «Асинхронное программирование на Python для начинающих»
Привет! Дважды в год мы в Metaclass KTS проводим бесплатные школы, по итогам которых набираем себе стажеров. Часто на курсе по бэкенду мы сталкиваемся с отсутствием знаний у студентов на тему...
Forwarded from Python School
Когда стоит использовать замыкания? (ч.2)
Иногда количество атрибутов и методов становится больше, лучше реализовать класс.
Вот простой пример, где замыкание может быть более предпочтительным, чем определение класса и создание объектов. Но выбор остается за вами.
Иногда количество атрибутов и методов становится больше, лучше реализовать класс.
Вот простой пример, где замыкание может быть более предпочтительным, чем определение класса и создание объектов. Но выбор остается за вами.
Forwarded from Python School
Ajax required
Этот декоратор проверяет, является ли запрос AJAX-запросом, этот декоратор полезен, когда мы работаем с Javascript-фреймворками такими как jQuery, и является хорошим способом защиты нашего приложения.
Этот декоратор проверяет, является ли запрос AJAX-запросом, этот декоратор полезен, когда мы работаем с Javascript-фреймворками такими как jQuery, и является хорошим способом защиты нашего приложения.
Forwarded from Базы данных & SQL
Как подружить Python и базы данных SQL.
Подробное руководство.
#python #postgresql #sqlite #mysql
Автор данной статьи рассказывает как связать Python и такие СУБД как: SQLite, MySQL и PostgreSQL.
Читать
Подробное руководство.
#python #postgresql #sqlite #mysql
Автор данной статьи рассказывает как связать Python и такие СУБД как: SQLite, MySQL и PostgreSQL.
Читать
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Заключительное видео по модулю 5 - Python в Облаке AWS на базе AWS Python Workshop. Так же Сергей перевел весь воркшоп на русский, я сам его прошел и остался очень довольный, все как мы любим - от простого к сложному.
Python является самым популярным языком программирования и используются абсолютно для любых задач. В будующих модулях 07. Spark, 08. Big Data и 09. Data Lake мы начнем использовать Python для аналитики, трансформации и инжиниринга данных, поэтому мы решили вв конце модуля про облычные вычисления провести Workshop по Python на AWS. Воркшоп доступен на английском и русском языках. Из него вы на парктики узнаете основы работы с Python:
📌 Переменные
📌 Типы данных
📌 Пакеты
📌 Функции
📌 Аргументы и параметры
📌 Циклы и Условия
📌 Логирование и Ошибки
📌 Python библиотека boto3 для работы с AWS
📌 Cloud9 - AWS IDE
Модуль 5 оффициально окончен. Все материалы по нему - в git, включая сертификат для linkedin и значок открытка для социальных сетей.
Далее я начну модуль 6, а Рома портирует модуль про облачные вычисления как отдельный самостоятельный курс на степик. Мы явно опережаем время с облаками, но это был важный элемент в современной аналитике.
Python является самым популярным языком программирования и используются абсолютно для любых задач. В будующих модулях 07. Spark, 08. Big Data и 09. Data Lake мы начнем использовать Python для аналитики, трансформации и инжиниринга данных, поэтому мы решили вв конце модуля про облычные вычисления провести Workshop по Python на AWS. Воркшоп доступен на английском и русском языках. Из него вы на парктики узнаете основы работы с Python:
📌 Переменные
📌 Типы данных
📌 Пакеты
📌 Функции
📌 Аргументы и параметры
📌 Циклы и Условия
📌 Логирование и Ошибки
📌 Python библиотека boto3 для работы с AWS
📌 Cloud9 - AWS IDE
Модуль 5 оффициально окончен. Все материалы по нему - в git, включая сертификат для linkedin и значок открытка для социальных сетей.
Далее я начну модуль 6, а Рома портирует модуль про облачные вычисления как отдельный самостоятельный курс на степик. Мы явно опережаем время с облаками, но это был важный элемент в современной аналитике.
YouTube
DATALEARN | DE - 101 | МОДУЛЬ 5-10 PYTHON В ОБЛАКЕ
Python является самым популярным языком программирования и используются абсолютно для любых задач. В будующих модулях 07. Spark, 08. Big Data и 09. Data Lake мы начнем использовать Python для аналитики, трансформации и инжиниринга данных, поэтому мы решили…
Forwarded from Python Academy
Вызов программ операционной системы
sh — это полноценный интерфейс, как альтернатива
Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.
Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции.
Также в модуле реализована функция
#sh
sh — это полноценный интерфейс, как альтернатива
subprocess
, который позволяет вызывать любую программу, как если бы это была обычная функция. Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.
sh
полагается на системные вызовы Unix и работает только в Unix-подобных операционных системах, т.е. данный модуль не подойдет для работы с Windows.Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции.
Также в модуле реализована функция
which
, которая находит полный путь до программы либо возвращает None
, если программа не найдена.#sh
Forwarded from Python Academy
Находим схожие строки
В стандартной библиотеке Python существует модуль
Этот метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент — список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
#difflib
В стандартной библиотеке Python существует модуль
difflib
, в котором есть интересный метод get_close_matches
. Он позволяет найти в списке строки, похожие на некую исходную.Этот метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент — список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
n
, который задаёт максимальное число возвращаемых совпадений.#difflib
Forwarded from Python Academy
Гайд по Python для новичков
Если впервые на канале — полезно знать, что в Python Academy уже куча статей на разные темы. Вот лучшее из того, о чем я успел рассказать:
— Вирус локер на Python и Tkinter
— 7 фишек, максимально улучшающие твой код
— Работа с процессами в Python
— 99% точность в классификации цифр на Keras
— Pandas для начинающих
— Градиентный спуск: просто о сложном
#начинающим
Если впервые на канале — полезно знать, что в Python Academy уже куча статей на разные темы. Вот лучшее из того, о чем я успел рассказать:
— Вирус локер на Python и Tkinter
— 7 фишек, максимально улучшающие твой код
— Работа с процессами в Python
— 99% точность в классификации цифр на Keras
— Pandas для начинающих
— Градиентный спуск: просто о сложном
#начинающим
Forwarded from Python Academy
Аргументы и параметры командной строки
Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль
Для начала нам нужно создать объект парсера
Первым параметром
После добавления всех аргументов, нам нужно их спарсить с помощью метода
#argparse
Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль
argparse
.Для начала нам нужно создать объект парсера
ArgumentParser
, в который мы уже сможем добавить аргументы с нужными параметрами с помощью метода add_argument
.Первым параметром
add_argument
принимает либо имя обязательного позиционного аргумента, либо список опционального аргумента (опциональный аргумент идентифицируется через -
). Также у add_argument
есть множество необязательных опциональных параметров для работы с передаваемым значением аргумента, о них можете почитать в данной статье.После добавления всех аргументов, нам нужно их спарсить с помощью метода
parse_args
, на выходе мы получим объект со всеми содержащимися аргументами.#argparse