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
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Отличные примеры про использование error handler in Python "Python Try and Except Statements – How to Handle Exceptions in Python" https://www.freecodecamp.org/news/python-try-and-except-statements-how-to-handle-exceptions-in-python/
freeCodeCamp.org
Python Try and Except Statements – How to Handle Exceptions in Python
When coding in Python, you can often anticipate runtime errors even in a syntactically and logically correct program. These errors can be caused by invalid inputs or some predictable inconsistencies. In Python, you can use the try and the except blo...
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
Другая проблема - это ротация паролей и ключей каждые 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