Python Academy – Telegram
Python Academy
46.6K subscribers
1.28K photos
3 videos
431 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Хеширование в Python используя hashlib

Библиотека hashlib предоставляет алгоритмы хеширования, которые позволяют создавать уникальные хеш-суммы для данных. Это полезно для проверки целостности файлов, хранения паролей в безопасной форме и других задач безопасности данных.

Пример кода:
import hashlib

# Пример хеширования строки с использованием SHA-256
data_to_hash = "Hello, World!"
hashed_data = hashlib.sha256(data_to_hash.encode()).hexdigest()

print(f"Исходные данные: {data_to_hash}")
print(f"Хеш-сумма (SHA-256): {hashed_data}")
В этом примере мы используем алгоритм SHA-256 из библиотеки hashlib для создания хеш-суммы строки "Hello, World!". Результат выводится в шестнадцатеричном формате.

Библиотека hashlib является одним из лучших инструментов для обеспечения безопасности данных в Python. Путем использования различных алгоритмов хеширования, таких как MD5, SHA-256 и других, вы можете обеспечить целостность данных и повысить уровень безопасности ваших приложений.

#python #hashlib
3😱1
Хэширование

Для создания хэш-значений в python существует удобный модуль hashlib, реализующий общий интерфейс для ряда популярных хэш функций и также может использовать функции доступные в системе, предоставляемые с установленным OpenSSL.

Использование очень простое, в модуле существует ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша. Объект хэша мы можем обновить методом update, сконкатенировав тем самым строки, а также можем можем вывести полученное значение с помощью методов digest и hexdigest. Первый возвращает байт-строку, второй - в шестнадцатеричном формате.

#hash #hashlib
4👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Как объяснить близким, кем вы работаете?

На обеденном перерыве попробовали составить шпаргалку для продуктовых аналитиков с помощью режима голосового общения ИИ-помощника Гигачата.

Сохраняйте и рассказывайте маме, девушке или младшему братику, если они не понимают ничего в IT, но хотят узнать о вашей работе чуть больше.
👍5🔥21👎1
Официальное упорядочивание словарей

Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.

Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.

Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.

#словари
2👍2🔥2
Работаем со временем без головной боли

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

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

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

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

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

#время #arrow
🔥61
Дескрипторы

Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.

Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса __get____set__ или __delete__. После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.

У данного объекта будет переопределено поведение при доступе к атрибуту (__get__), при присваивании значений (__set__) или при удалении (__delete__).

#классы #дескрипторы
👍6
Использование списков в качестве стеков

Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".

Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод append, для извлечения – pop.

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

#списки #стек
2
Добавляем классу большую функциональность

На прошлой неделе мы объясняли декоратор @classmethod, а сейчас рассмотрим @staticmethod.

@staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра.

Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать.

В чем же разница?
@classmethod используется в суперклассе для определения того, как метод должен вести себя, когда он вызывается разными дочерними классами.
@staticmethod используется, когда мы хотим вернуть объект, независимо от вызываемого дочернего класса.
1
Выполняем код по расписанию

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

Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция attime будет выполняться каджую минуту с 6 утра до 10 вечера в рабочие дни недели. Подробнее о написании своих расписаний можно почитать тут.

#aiocron
5👍4
Строим графики

Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных.

Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или numpy массив.

Далее метод plt.plot(data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями.

Метод plt.show() откроет графическое окно с изображенным графиком.

Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.

#matplotlib
1
Типизация в Python с использованием модуля typing

В Python модуль typing предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным.

Зачем использовать типизацию?

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

2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.

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

Пример использования типизации для переменных и функций:
from typing import List, Tuple

def multiply(a: int, b: int) -> int:
return a * b

def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average

# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]


Здесь a: int и b: int указывают на типы аргументов функции, а -> int и -> Tuple[int, int] - на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.

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

#python #typing
🔥4
Открыть ИТ-компанию в два клика

На портале Госуслуг запустили «жизненную ситуацию», которая помогает пройти весь процесс запуска ИТ-бизнеса полностью онлайн.

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

Развитие цифровых сервисов идёт по нацпроекту «Экономика данных».
👍4🔥32👎2
Корутины

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

Обратите внимание на то, как было использовано ключевое слово yield. При таком написании создаётся не генератор, а корутина, что позволяет не просто генерировать значения, но и принимать их.

Функция работает так: при отправке значения через метод send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран.

#генераторы #корутины
👍42👎1😱1