#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Python Academy
ООП: композиция

Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.

Как правило, в этом случае объект одного из классов (в примере выше это Salary) является полем другого (Employee). Сложного здесь, как вы видите, ничего нет.

Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора.

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

#классы #ооп
Forwarded from Python Academy
Считаем ссылки на объект

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

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

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

В примере выше продемонстрирован простой способ, как можно посмотреть количество ссылок у объекта.

#ctypes
Forwarded from Python Academy
Пакетный менеджер pip

Для работы с пакетами в Python есть специальная утилита pip — устанавливается она сразу вместе с интерпретатором.

Установить или удалить пакет можно через команды install и uninstall. После них нужно перечислить необходимые пакеты через пробел.

Команды list и freeze покажут все пакеты в текущем окружении, а также их версии. Обратите внимание на то, как выглядит вывод каждой из них.

А с помощью show можно посмотреть информацию о конкретном пакете: название, версию, описание, автора, лицензию и другое.

#pip
Forwarded from Python Academy
Ключевое слово nonlocal

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

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

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

#переменные #nonlocal
Forwarded from Python Academy
Работаем со временем без головной боли

При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:

— Их слишком много: datetime, time, calendar, dateutil, pytz и другие;
— В них слишком много типов: date, time, datetime, tzinfo, timedelta, relativedelta и т. д.

И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип Arrow.

Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал datetime в Arrow и обратно.

Еще из приятных бонусов: там есть функция humanize, которая конвертирует время в читаемый текст.

#время #arrow
Forwarded from Python Academy
Вызов программ операционной системы

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

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

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

#sh
Forwarded from Python Community
⚡️ Отсутствующие элементы в словаре

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

В словарях вызывается метод __missing __, если ключа не существует, но унаследовав класс от dict и переопределив метод, мы можем изменить реакцию программы на отсутствующий ключ.

Примерно так же, как и на фото выше, реализован класс defaultdict из модуля collections.

#теория
Forwarded from Python School
Когда стоит использовать замыкания? (ч.2)

Иногда количество атрибутов и методов становится больше, лучше реализовать класс.

Вот простой пример, где замыкание может быть более предпочтительным, чем определение класса и создание объектов. Но выбор остается за вами.
Forwarded from Python School
Ajax required

Этот декоратор проверяет, является ли запрос AJAX-запросом, этот декоратор полезен, когда мы работаем с Javascript-фреймворками такими как jQuery, и является хорошим способом защиты нашего приложения.
​​Как подружить Python и базы данных SQL.
Подробное руководство.

#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, а Рома портирует модуль про облачные вычисления как отдельный самостоятельный курс на степик. Мы явно опережаем время с облаками, но это был важный элемент в современной аналитике.
Forwarded from Python Academy
Вызов программ операционной системы

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

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

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

#sh
Forwarded from Python Academy
​​Находим схожие строки

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

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

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

#difflib
Forwarded from Python Academy
Гайд по Python для новичков

Если впервые на канале — полезно знать, что в Python Academy уже куча статей на разные темы. Вот лучшее из того, о чем я успел рассказать:

Вирус локер на Python и Tkinter
7 фишек, максимально улучшающие твой код
Работа с процессами в Python
99% точность в классификации цифр на Keras
Pandas для начинающих
Градиентный спуск: просто о сложном

#начинающим
Forwarded from Python Academy
Аргументы и параметры командной строки

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

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

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

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

#argparse
Forwarded from Python Community
⚡️ Ответ на предыдущую задачу
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Статья написано про конкретный пример - пароли в Python, то есть о том, что нельзя хранить их в коде. На самом деле топик достаточно обширный. В облаках я уже привык использовать решения для безопасности, где я могу хранить ключи - AWS Secret Manager или Azure Key Vault. А как вы храните пароли, если не используете облако?

Другая проблема - это ротация паролей и ключей каждые 90 дней. Например, AWS Secret может сам меня ключ IAM secret key и подставлять в код - идеальный сценарий. У Azure, да и AWS можно вообще обходится без паролей, что тоже очень хорошая практика. Но интересно как с этим on premise?

"Stop Hardcoding Sensitive Data in Your Python Applications | by Ahmed Besbes | Sep, 2021 | Towards Data Science" https://towardsdatascience.com/stop-hardcoding-sensitive-data-in-your-python-applications-86eb2a96bec3