Хеширование в Python используя hashlib
Библиотека
Пример кода:
Библиотека
#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 существует удобный модуль
Использование очень простое, в модуле существует ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша. Объект хэша мы можем обновить методом
#hash #hashlib
Для создания хэш-значений в python существует удобный модуль
hashlib, реализующий общий интерфейс для ряда популярных хэш функций и также может использовать функции доступные в системе, предоставляемые с установленным OpenSSL.Использование очень простое, в модуле существует ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша. Объект хэша мы можем обновить методом
update, сконкатенировав тем самым строки, а также можем можем вывести полученное значение с помощью методов digest и hexdigest. Первый возвращает байт-строку, второй - в шестнадцатеричном формате.#hash #hashlib
❤4👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Как объяснить близким, кем вы работаете?
На обеденном перерыве попробовали составить шпаргалку для продуктовых аналитиков с помощью режима голосового общения ИИ-помощника Гигачата.
Сохраняйте и рассказывайте маме, девушке или младшему братику, если они не понимают ничего в IT, но хотят узнать о вашей работе чуть больше.
На обеденном перерыве попробовали составить шпаргалку для продуктовых аналитиков с помощью режима голосового общения ИИ-помощника Гигачата.
Сохраняйте и рассказывайте маме, девушке или младшему братику, если они не понимают ничего в IT, но хотят узнать о вашей работе чуть больше.
👍5🔥2❤1👎1
Официальное упорядочивание словарей
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#словари
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#словари
❤2👍2🔥2
Работаем со временем без головной боли
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много:
— В них слишком много типов:
И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип
Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал
Еще из приятных бонусов: там есть функция
#время #arrow
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много:
datetime, time, calendar, dateutil, pytz и другие; — В них слишком много типов:
date, time, datetime, tzinfo, timedelta, relativedelta и т. д. И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип
Arrow. Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал
datetime в Arrow и обратно. Еще из приятных бонусов: там есть функция
humanize, которая конвертирует время в читаемый текст. #время #arrow
🔥6❤1
Дескрипторы
Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.
Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса
У данного объекта будет переопределено поведение при доступе к атрибуту (
#классы #дескрипторы
Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.
Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса
__get__, __set__ или __delete__. После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.У данного объекта будет переопределено поведение при доступе к атрибуту (
__get__), при присваивании значений (__set__) или при удалении (__delete__).#классы #дескрипторы
👍6
Использование списков в качестве стеков
Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".
Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод
Программный вид стека применяется для обхода структур по типу графов и деревьев. При реализации рекурсивных функций также будет применяться стек, но в таком случае уже его аппаратный вид.
#списки #стек
Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".
Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод
append, для извлечения – pop.Программный вид стека применяется для обхода структур по типу графов и деревьев. При реализации рекурсивных функций также будет применяться стек, но в таком случае уже его аппаратный вид.
#списки #стек
❤2
Добавляем классу большую функциональность
На прошлой неделе мы объясняли декоратор
Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать.
В чем же разница?
На прошлой неделе мы объясняли декоратор
@classmethod, а сейчас рассмотрим @staticmethod. @staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра.Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать.
В чем же разница?
@classmethod используется в суперклассе для определения того, как метод должен вести себя, когда он вызывается разными дочерними классами. @staticmethod используется, когда мы хотим вернуть объект, независимо от вызываемого дочернего класса.❤1
Выполняем код по расписанию
Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron.
Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция
#aiocron
Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron.
Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция
attime будет выполняться каджую минуту с 6 утра до 10 вечера в рабочие дни недели. Подробнее о написании своих расписаний можно почитать тут.#aiocron
❤5👍4
Строим графики
Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных.
Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
Далее метод
Метод
Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.
#matplotlib
Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных.
Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
numpy массив.Далее метод
plt.plot(data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями.Метод
plt.show() откроет графическое окно с изображенным графиком.Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.
#matplotlib
❤1
Типизация в Python с использованием модуля typing
В
Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как
3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
Здесь
Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку.
#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
Открыть ИТ-компанию в два клика
На портале Госуслуг запустили «жизненную ситуацию», которая помогает пройти весь процесс запуска ИТ-бизнеса полностью онлайн.
Сервис работает как пошаговый навигатор: подсказывает, как определить вид деятельности, собрать документы, зарегистрировать компанию онлайн, получить аккредитацию и оформить права на программное обеспечение.
Сервис опирается на актуальные требования и сразу показывает, какие меры поддержки доступны ИТ-компаниям. Все действия — в одном месте, без лишних обращений и поиска информации.
Развитие цифровых сервисов идёт по нацпроекту «Экономика данных».
На портале Госуслуг запустили «жизненную ситуацию», которая помогает пройти весь процесс запуска ИТ-бизнеса полностью онлайн.
Сервис работает как пошаговый навигатор: подсказывает, как определить вид деятельности, собрать документы, зарегистрировать компанию онлайн, получить аккредитацию и оформить права на программное обеспечение.
Сервис опирается на актуальные требования и сразу показывает, какие меры поддержки доступны ИТ-компаниям. Все действия — в одном месте, без лишних обращений и поиска информации.
Развитие цифровых сервисов идёт по нацпроекту «Экономика данных».
❤2👍1👎1🔥1
Корутины
Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цикле подставлять значение и выводить строку.
Обратите внимание на то, как было использовано ключевое слово
Функция работает так: при отправке значения через метод
#генераторы #корутины
Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цикле подставлять значение и выводить строку.
Обратите внимание на то, как было использовано ключевое слово
yield. При таком написании создаётся не генератор, а корутина, что позволяет не просто генерировать значения, но и принимать их.Функция работает так: при отправке значения через метод
send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран.#генераторы #корутины
👍3❤1😱1