Pythoner
Ir al canal en Telegram
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику. Сотрудничество - @flattys Цены - @serpent_media Канал на бирже: https://telega.in/c/pythonercode
Mostrar más6 797
Suscriptores
-724 horas
-117 días
-4130 días
Archivo de publicaciones
6 798
✈️А в этой части рассмотрим тестирование хэш-функций
➡️Генерация тестовых данных
Для тестирования используется функция generate_random_strings, которая создает случайные строки заданной длины.
➡️Анализ распределения и коллизий
Функция test_distribution_and_collisions оценивает качество распределения элементов по хэш-таблице и подсчитывает количество коллизий.
➡️Измерение времени выполнения
Функция test_execution_time измеряет время, необходимое для хэширования набора элементов, что позволяет сравнить производительность разных хэш-функций.
➡️Проверка чувствительности
Функция test_sensitivity проверяет, насколько хэш-функция чувствительна к небольшим изменениям во входных данных.
➡️Заключение
Выбор подходящей хэш-функции зависит от конкретных требований приложения. Простые хэш-функции могут быть достаточными для небольших наборов данных, в то время как для больших объемов данных или повышенных требований к безопасности могут потребоваться более сложные алгоритмы. Важно учитывать баланс между скоростью выполнения, качеством распределения и устойчивостью к коллизиям при выборе хэш-функции для конкретной задачи.
🐍Pythoner
6 798
✈️Хэш-функции играют важную роль в компьютерных науках, особенно в структурах данных и криптографии. В этой статье мы рассмотрим различные типы хэш-функций, реализованные на Python, и проанализируем их характеристики.
🔎 Типы хэш-функций
➡️1. Простая хэш-функция (simple_hash)
Эта функция суммирует ASCII-значения символов входной строки и применяет операцию модуля. Она проста в реализации, но может привести к неравномерному распределению.
def simple_hash(input_str, table_size):
hash_value = 0
for char in input_str:
hash_value += ord(char)
return hash_value % table_size
➡️2. Полиномиальный хэш (polynomial_hash)
Использует полиномиальное накопление ASCII-значений с простым числом, что позволяет придать больший вес символам в начале строки.
def polynomial_hash(input_str, table_size, prime=31):
hash_value = 0
for i, char in enumerate(input_str):
hash_value += ord(char) * (prime ** i)
return hash_value % table_size
➡️3. FNV-1a хэш (fnv1a_hash)
32-битная версия FNV-1a хэша, известная своими хорошими характеристиками распределения.
def fnv1a_hash(key, table_size):
FNV_prime = 16777619
FNV_offset_basis = 2166136261
hash_value = FNV_offset_basis
for char in key:
hash_value ^= ord(char)
hash_value *= FNV_prime
hash_value &= 0xffffffff # Обеспечивает 32-битный хэш
return hash_value % table_size
➡️4. XXХэш (xx_hash)
Использует библиотеку xxhash для быстрого некриптографического хэширования, эффективного для больших объемов данных.
def xx_hash(input_str, table_size):
return xxhash.xxh32(input_str).intdigest() % table_size
➡️5. SipHash (sip_hash)
Применяет HMAC с SHA-256 для повышенной безопасности, но может быть медленнее некриптографических хэшей.
def sip_hash(input_str, table_size, key=b'secretkey'):
hash_value = hmac.new(key, input_str.encode(), digestmod='sha256').hexdigest()
return int(hash_value, 16) % table_size
➡️6. MurmurHash (murmur_hash)
Быстрая некриптографическая хэш-функция, часто используемая в хэш-таблицах и фильтрах Блума.
def murmur_hash(input_str, table_size):
hash_value = mmh3.hash(input_str) % table_size
return hash_value
🐍Pythoner6 798
✈️А в этой части рассмотрим тестирование хэш-функций
➡️Генерация тестовых данных
Для тестирования используется функция generate_random_strings, которая создает случайные строки заданной длины.
➡️Анализ распределения и коллизий
Функция test_distribution_and_collisions оценивает качество распределения элементов по хэш-таблице и подсчитывает количество коллизий.
➡️Измерение времени выполнения
Функция test_execution_time измеряет время, необходимое для хэширования набора элементов, что позволяет сравнить производительность разных хэш-функций.
➡️Проверка чувствительности
Функция test_sensitivity проверяет, насколько хэш-функция чувствительна к небольшим изменениям во входных данных.
➡️Заключение
Выбор подходящей хэш-функции зависит от конкретных требований приложения. Простые хэш-функции могут быть достаточными для небольших наборов данных, в то время как для больших объемов данных или повышенных требований к безопасности могут потребоваться более сложные алгоритмы. Важно учитывать баланс между скоростью выполнения, качеством распределения и устойчивостью к коллизиям при выборе хэш-функции для конкретной задачи.
🐍Pythoner
6 798
✈️Manim — это библиотека, которая используется для создания анимированных визуализаций и математических демонстраций. Manim позволяет легко оптимизировать визуализацию математических концепций с помощью анимаций, графиков и других визуальных элементов.
➡️Применение
С помощью Manim можно создавать как простые анимации, так и сложные сцены с множеством объектов и эффектов. Библиотека предоставляет обширные возможности по работе с графикой, анимацией и текстом.
➡️Пример:
from manim import *
class SquareNumber(Scene):
def construct(self):
# Создаем квадрат и текст
square = Square(side_length=2)
number = MathTex("0").scale(2)
# Центрируем квадрат и текст
square.move_to(ORIGIN)
number.next_to(square, DOWN)
# Добавляем квадрат и текст на экран
self.play(Create(square), Write(number))
self.wait(1)
# Изменяем текст на 1
self.play(Transform(number, MathTex("1").scale(2)))
self.wait(1)
# Изменяем текст на 4 и меняем размер квадрата
self.play(Transform(number, MathTex("4").scale(2)),
square.animate.scale(2))
self.wait(1)
# Изменяем текст на 9 и меняем размер квадрата
self.play(Transform(number, MathTex("9").scale(2)),
square.animate.scale(3))
self.wait(1)
# Завершаем сцену
self.play(FadeOut(square), FadeOut(number))
# Для запуска сцены используйте следующую команду в терминале
# manim -pql имя_файла.py SquareNumber
⬆️Чтобы запустить данный код и увидеть анимацию, сохраните его в файл, например, square_number.py, и выполните указанную команду в терминале.
➡️Заключение
Manim – мощный инструмент для создания анимационной графики, предлагающий гибкость и творческий потенциал для визуализации математических и научных концепций.
🐍Pythoner6 798
Бесплатное 5-месячное обучение IT-профессиям детям 7-17л
⚡С 30 октября каждый ребенок может получить сертификат на 5 месяцев бесплатного обучения IT-специальностям. Прием заявок продлится до 10 ноября!
Чтобы понять, может ли ваш ребенок получить сертификат, заполните небольшую анкету (займет пару минут).
Вы сразу узнаете, попали ли вы под программу и какая IT-профессия подойдет вашему ребенку💻
В мире, где технологии становятся неотъемлемой частью каждой сферы жизни, умение программировать становится не просто желательным навыком, а необходимым инструментом для успешного будущего💰
Заполнить анкету и попасть на бесплатное пятимесячное обучение IT-специальностям можно, нажав на ссылку - clck.ru/3EHG6w
Узнать больше
#реклама 16+
salebot.site
О рекламодателе
6 798
➡️Что такое итерируемый счетчик?
Итерируемый счетчик в Python - это объект, который можно использовать в цикле for и других итерационных контекстах. Он позволяет последовательно получать значения, обычно числовые, в заданном диапазоне или по определенному правилу.
➡️Реализация итерируемого счетчика
Давайте рассмотрим пример реализации простого итерируемого счетчика:
class IterableCounter:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current > self.end:
raise StopIteration
else:
self.current += 1
return self.current - 1
В этом примере:
💬init инициализирует счетчик начальным и конечным значениями.
💬iter возвращает сам объект, делая его итератором.
💬next определяет логику получения следующего значения.
➡️Использование итерируемого счетчика
Теперь мы можем использовать наш счетчик в цикле for:
counter = IterableCounter(1, 5)
for num in counter:
print(num)
⬆️Этот код выведет числа от 1 до 5.
➡️Преимущества итерируемого счетчика
💬Гибкость: можно легко изменить логику генерации значений.
💬Экономия памяти: значения генерируются по мере необходимости.
💬Интеграция с циклами: легко использовать в стандартных конструкциях Python.
➡️Альтернативы
В Python есть встроенные альтернативы для простых случаев:
💬range(): для последовательностей целых чисел.
💬enumerate(): для нумерации элементов итерируемого объекта.
➡️Заключение
Итерируемые счетчики в Python - мощный инструмент для создания пользовательских последовательностей. Они особенно полезны, когда стандартные функции не удовлетворяют специфическим требованиям вашей задачи.
🐍Pythoner6 798
message_effect_id - это уникальный идентификатор, используемый в Telegram Bot API для определения конкретного визуального эффекта, который можно применить к сообщению. Эти эффекты представляют собой анимированные реакции, которые пользователи могут добавлять к сообщениям.
➡️Основные характеристики message_effect_id:
Уникальность: Каждый эффект имеет свой уникальный числовой идентификатор.Формат: Идентификаторы представлены в виде строк, содержащих длинные числовые значения.Связь с эмодзи: Каждый message_effect_id соответствует определенному эмодзи, которое визуально представляет эффект.
➡️Примеры message_effect_id:
{
'🔥': "5104841245755180586",
'👍': "5107584321108051014",
'👎': "5104858069142078462",
'❤️': "5044134455711629726",
'🎉': "5046509860389126442",
'💩': "5046589136895476101"
}
➡️Использование в Telegram Bot API:
Применение эффектов: Боты могут использовать эти идентификаторы для добавления анимированных реакций к сообщениям.Интерактивность: Позволяет создавать более динамичные и интерактивные взаимодействия в чатах.Кастомизация: Разработчики могут выбирать конкретные эффекты для различных сценариев использования бота.
➡️Значение для разработчиков:
Понимание и правильное использование message_effect_id позволяет разработчикам ботов создавать более привлекательные и интерактивные интерфейсы, улучшая пользовательский опыт в Telegram.
🐍Pythoner6 798
Сообщество IT-специалистов в Telegram от Selectel.
Канал крупнейшего независимого провайдера IT-инфраструктуры и облаков.
Шесть причин подписаться на канал:
- железные новости;
- обзоры продуктов;
- разборы кейсов;
- актуальные IT-статьи;
- анонсы митапов;
- бесплатные курсы.
Подписаться
#реклама
О рекламодателе
6 798
Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥
Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате
Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.
Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!
6 798
Сделали для подписчиков наших каналов по Python небольшой розыгрыш звёзд😘
1 ноября в 18 часов по мск, 5 победителей получат по 100 звёзд, которые можно тратить в нашем и других каналах, дарить подарки и другое, удачи!P.S. говорят если переслать этот розыгрыш друзьям, то шанс увеличится.
6 798
Premios del sorteo
500 estrellas se distribuirán entre 5 ganadores.
Fecha de finalización
6 798
🐍Разбор
Метод find() возвращает индекс первого вхождения указанного символа или подстроки в строке. Если символ или подстрока не найдены, метод find() возвращает -1
Регистр тоже играет важную роль! Помни, что "a" - это не то же самое что "A"
6 798
⚡ Вся необходимая информация теперь собрана в одном месте — для специалистов любого направления.
📱 Python for Backend Developer
📱 Python for DevOps Engineer
📊 Python for Data Engineer
🔬 Python for Data Scientist
🤖 Python for ML Engineer
✅ Python for QA Engineer
📈 Python for Data Analyst
🧠 Python for AI Engineer
Получайте доступ к актуальным ресурсам уже сейчас!
6 798
✈️Полиморфизм - ключевой принцип объектно-ориентированного программирования (ООП), позволяющий объектам различных классов иметь одинаковый интерфейс. Термин "полиморфизм" происходит от греческого слова, означающего "множество форм". В Python полиморфизм реализуется двумя основными способами: перегрузкой методов и их переопределением.
➡️Перегрузка методов
Перегрузка методов - это возможность класса иметь несколько методов с одинаковым именем, но разными параметрами. В Python прямая перегрузка методов не поддерживается, но похожего эффекта можно достичь с помощью параметров по умолчанию и аргументов переменной длины.
➡️Пример перегрузки метода
class MathOperations:
def add(self, a, b, c=0):
return a + b + c
math_op = MathOperations()
print(math_op.add(10, 20)) # Вывод: 30
print(math_op.add(10, 20, 30)) # Вывод: 60
⬆️В этом примере метод add() может принимать два или три аргумента, имитируя перегрузку метода.
➡️Переопределение методов
Переопределение методов - это механизм, позволяющий подклассу предоставить свою реализацию метода, уже определенного в родительском классе. Это позволяет изменять или расширять поведение унаследованных методов.
✅Пример переопределения метода
class Animal:
def sound(self):
return "Какой-то звук"
class Dog(Animal):
def sound(self):
return "Гав"
class Cat(Animal):
def sound(self):
return "Мяу"
dog = Dog()
cat = Cat()
print(dog.sound()) # Вывод: Гав
print(cat.sound()) # Вывод: Мяу
⬆️В этом примере классы Dog и Cat переопределяют метод sound(), унаследованный от класса Animal.
➡️Практическое применение полиморфизма
Рассмотрим пример использования полиморфизма в системе обработки платежей:
class Payment:
def process(self, amount):
raise NotImplementedError("Подклассы должны реализовать этот метод")
class CreditCardPayment(Payment):
def process(self, amount):
return f"Обработан платеж кредитной картой на сумму {amount}."
class PayPalPayment(Payment):
def process(self, amount):
return f"Обработан платеж через PayPal на сумму {amount}."
credit_card = CreditCardPayment()
paypal = PayPalPayment()
print(credit_card.process(100))
print(paypal.process(200))
⬆️Этот пример демонстрирует, как полиморфизм позволяет работать с разными типами платежей через единый интерфейс.
➡️Заключение
Полиморфизм в Python, реализуемый через переопределение методов и имитацию перегрузки, обеспечивает гибкость и возможность повторного использования кода. Эти концепции позволяют создавать более модульные, расширяемые и легко поддерживаемые программы. Эффективное использование полиморфизма - ключ к написанию чистого и элегантного кода на Python.
🐍Pythoner6 798
Бесплатное IT-образование в 2024
Отобрали для вас полезные телеграм-каналы, которые помогут освоить IT-направления
Выбирайте нужное и подписывайтесь:
— Frontend:
t.me/+qWPopdiaxVMzZDgy
— Backend:
t.me/+X-zQb-NgzGNhMzRi
— GitHub:
t.me/+3BVAmDixuO9lYTFi
— Книги айти:
t.me/+IG2NAVECUXs4MGYy
— Python:
t.me/+vBSA5zgB_gA0OWRi
— Java:
t.me/+3BRKfZ09ewg0NDJi
— C#:
t.me/+O3pnFY4bpF5hNTEy
— С/С++:
t.me/+PGxPXpZZczQxODcy
— Базы Данных & SQL:
t.me/+530qWWydM8ExZjk6
— Golang:
t.me/+FvTd7F-O-NNmNGMy
— PHP:
t.me/+jBvbaet0vpplNDQy
— Моб. разработка:
t.me/+Ikx5H4MrPihlOWZi
— Разработка игр:
t.me/+Z34knEvL8P9lZTAy
— DevOps:
t.me/+3wSgqmP5NOBhZGUy
— Data Science:
t.me/+-CuoNNa6P7VjOTRi
— ИБ:
t.me/+4jo8N5jtGDs1NTli
— Тестирование:
t.me/+MvFXlXbmmPFkM2Ey
— Маркетинг:
t.me/+lgiFPJTYp8M0ZjRi
— Дизайн:
t.me/+gmflvDFPc_c1YmIy
Подписаться
#реклама 16+
О рекламодателе
6 798
✈️Memray - это библиотека для профилирования памяти и она является важным инструментом оптимизации производительности Python программ.
➡️Библиотека отслеживает выделение и освобождение памяти при работе программы, поддерживает отслеживание ссылок на объект, применятся для профилирования на серверах и в виртуальных окружениях.
➡️Основные функции:
💬Отслеживание выделения памяти в реальном времени.
💬Анализ использования памяти по различным объектам и их типам.
💬Предоставление удобных отчетов и визуализаций для упрощения диагностики.
➡️Пример использования:
Чтобы использовать Memray, нужно сначала установить его с помощью pip:
pip install memray
✅Затем можно использовать Memray для профилирования вашего Python-кода. Вот простой пример:
import memray
@memray.start()
def my_function():
# Пример кода, который может выделять память
a = [i for i in range(100000)]
b = [j ** 2 for j in a]
return b
my_function()
# Сохранение отчета о профилировании
memray.stop()
✅После завершения работы вашей функции Memray создаст файл отчета, который можно анализировать с использованием команд:
memray flamegraph <report_file>
⬆️Это визуализирует распределение памяти, что поможет вам лучше понять, как ваша программа использует память и где могут возникнуть проблемы.
🐍Pythoner
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 

