Python Hub - сборище Питонистов
Open in Telegram
Уголок счастья для любого питониста. Сотрудничество или заказы: @leshunist https://shcoder.dev - студия разработки ShcoderDevelopment https://t.me/pythonhub_chat - чат
Show more1 751
Subscribers
-124 hours
-57 days
+330 days
Posts Archive
🐈 Можно ли положить сайт, делая к нему запросы через Python?
🤙 Разбор темы 1: Определение DDoS-атаки
DDoS-атака (Distributed Denial of Service) - это атака, направленная на перегрузку ресурсов сервера или сети путем отправки большого количества запросов с целью обрушить его работу. Возникает вопрос, можно ли провести подобную атаку с помощью Python. Ответ - да, это технически возможно. Однако, важно отметить, что DDoS-атака является противозаконной и незаконным использование таких методов может повлечь за собой серьезные юридические последствия.
🤙 Разбор темы 2: Python и нагрузочное тестирование
Python является мощным языком программирования, который позволяет автоматизировать множество задач, включая отправку запросов к веб-сайтам. Однако, использование Python для нагрузочного тестирования, то есть для проверки производительности сайта под высокой нагрузкой, не означает, что вы сможете сразу "положить" сайт. Нагрузочное тестирование проводится с целью определить, как сайт будет работать при реальных условиях использования, и в большинстве случаев не представляет угрозу для его доступности.
🤙 Разбор темы 3: Защита от DDoS-атак
У веб-сайтов существуют механизмы защиты от DDoS-атак, которые позволяют обнаруживать и отражать подобные попытки. Это может быть использование специальных сервисов, фильтрация трафика или анализ поведения пользователей. Поэтому, даже если вы попытаетесь "положить" сайт с помощью Python, шансы на успех будут невелики.
Пробовали ли вы когда-нибудь что-нибудь положить?
Я помню, как когда-то давно пытался положить какой-то html'ный заброшенный сайт при помощи команды ping 🏓
👩💻 Асинхронное программирование в Python: Шаг в будущее
⚡️ Привет, уважаемые подписчики Python-канала! Сегодня мы вместе поговорим о важном аспекте программирования - асинхронном программировании в Python. Этот подход становится все более популярным, так как обеспечивает эффективную обработку множества задач одновременно. Давайте рассмотрим основы этой техники и как она может изменить ваш подход к написанию кода.
🔄 Что такое асинхронное программирование?
Асинхронное программирование - это способ написания кода, позволяющий выполнять несколько задач одновременно без блокировки основного потока выполнения. В Python для этого используются ключевые слова
async и await, которые делают функции асинхронными и определяют точки, где происходит ожидание.
💡 Преимущества асинхронного программирования:
1. Увеличение производительности: Асинхронный код позволяет эффективно использовать ресурсы, ускоряя выполнение задач.
2. Масштабируемость: Обработка множества задач одновременно без блокировки позволяет создавать масштабируемые приложения.
3. Улучшен отклик приложения: Пользователи получают быстрый отклик, даже если выполняются длительные операции.
🔍 Основные концепции асинхронного программирования в Python:
- `async def` и `await`: Обозначают асинхронные функции и точки ожидания выполнения задачи.
- Цикл событий (Event Loop): Основной механизм управления выполнением асинхронных задач.
- Корутины (Coroutines): Асинхронные функции, которые могут приостанавливать свое выполнение.
🚀 Пример асинхронного кода:
import asyncio
async def async_example():
print("Начало выполнения")
await asyncio.sleep(2)
print("Завершение выполнения")
async def main():
tasks = [async_example() for _ in range(5)]
await asyncio.gather(*tasks)
if __name__ == "__main__":
asyncio.run(main())
⚙️ Интеграция асинхронного кода:
Множество библиотек и фреймворков в Python уже поддерживают асинхронное программирование, включая aiohttp, asyncio, и многие другие. Это позволяет создавать высокопроизводительные веб-приложения, работающие с асинхронными запросами.
📚 Дополнительные ресурсы:
- [Документация Python по асинхронному программированию](https://docs.python.org/3/library/asyncio.html)
- [Статья на Real Python: "Async IO in Python: A Complete Walkthrough"](https://realpython.com/async-io-python/)
🔗 Заключение:
Асинхронное программирование в Python открывает перед вами новые горизонты возможностей. Надеемся, что данная статья помогла вам понять основы этой техники и вдохновила на ее использование в ваших проектах. Делитесь своим опытом в комментариях, и продолжайте изучение Python вместе с нами! 🚀🐍Почему вдруг пропали все бусты? 🙁
(ссылка, как намек) ☺️
https://t.me/pythonhub001?boost
👩💻 Популярная библиотека Boto и Botocore на PyPi
1️⃣ Boto3 помогает разработчикам упростить работу с AWS. Она предоставляет простой и понятный способ взаимодействия с различными сервисами AWS, такими как создание и настройка виртуальных серверов, управление файловым хранилищем, отправка сообщений и многое другое. Это позволяет автоматизировать различные задачи и сделать работу с AWS более эффективной.
2️⃣ Botocore представляет собой набор инструментов и клиентских библиотек для работы с Amazon Web Services (AWS). Она обеспечивает низкоуровневый доступ к различным сервисам AWS, таким как Amazon S3, Amazon EC2 и многим другим. Botocore позволяет разработчикам создавать, управлять и автоматизировать ресурсы в облаке AWS с помощью простого и интуитивно понятного API.
👆 Библиотека botocore также является ключевым компонентом PyPI - крупнейшего репозитория пакетов Python. PyPI предоставляет доступ к миллионам пакетов, которые можно установить и использовать в своих проектах. Botocore позволяет разработчикам использовать пакеты, связанные с AWS, и управлять ими с помощью простого и удобного интерфейса.
https://aws.amazon.com/ru/sdk-for-python/
https://pypi.org/project/boto3/
https://pypi.org/project/botocore/
👩💻 Лучшие пакеты PyPi!
Решил проверить, какие вообще самые популярные (по каким-то критериям, хз сам каким) библиотеки на PyPi
PyPI (Python Package Index) — это официальный репозиторий пакетов для языка программирования Python. Здесь собраны тысячи библиотек, модулей и приложений, которые могут быть полезны для разработчиков Python.
https://pypistats.org/top
https://hugovk.github.io/top-pypi-packages/
Вот два ресурса. Мне понравился больше первый.
Для ленивых предлагаю скрин!
❓Стоит ли вообще сделать краткий обзор этих либ из списка?
▶️ Субботний чилловый видос с решением задач на CodeWars! ▶️
😊 Уже на канале!
https://www.youtube.com/watch?v=R3DGJ-iO12k
Были бы интересны видео, где пилим большой проект? Или лучше маленькие проекты на 10-15 минут?
‼️‼️
📹 Думаю, что один из последних видосов по Tkinter вышел на канале! 📹
Есть тут еще олдовые любители Tk GUI?
(показываю варианты реализации paint приложения, ссылаясь на авторов. Все исходники в описании)
https://www.youtube.com/watch?v=YtTAdFCWsHc
Умер создатель языка программирования Pascal Николаус Вирт
Ему было 89 лет.
По данным iTWire, Вирт умер в своём доме в окружении родных 1 января 2024 года.
Почитать подробнее можно тут
Кто из вас писал на паскале? 🖥
Разбор 👨💻
'2' + '2' —> '22' текстовый формат.
При умножении текста на число, текст дублируется столько раз, чему равно число.
В нашем случае '22' * 3 —> '222222'
Если было бы, например 'hello' * 3 —> 'hellohellohello'
❗️ Округление чисел в Python
➡️ Функция round()
Один из самых простых способов округления числа в Python - использовать встроенную функцию round(). Функция round() округляет число до ближайшего целого значения. Например, если у нас есть число 3.7, функция round() округлит его до 4, а если у нас есть число 3.4, оно будет округлено до 3. Важно отметить, что если дробная часть числа равна 0.5, функция round() округлит число в сторону ближайшего четного значения. Например, число 2.5 будет округлено до 2, а число 3.5 будет округлено до 4.
num1 = 3.7
num2 = 3.4
rounded_num1 = round(num1)
rounded_num2 = round(num2)
print(rounded_num1) # Output: 4
print(rounded_num2) # Output: 3
➡️ Методы floor() и ceil()
Кроме функции round(), в Python также доступны методы floor() и ceil(). Метод floor() округляет число до наибольшего целого значения, которое меньше или равно данному числу. Например, если у нас есть число 4.8, метод floor() округлит его до 4. С другой стороны, метод ceil() округляет число до наименьшего целого значения, которое больше или равно данному числу. Например, если у нас есть число 2.2, метод ceil() округлит его до 3.
import math
num = 4.8
floored_num = math.floor(num)
ceiled_num = math.ceil(num)
print(floored_num) # Output: 4
print(ceiled_num) # Output: 5
➡️ Модуль math
Еще один способ округления чисел в Python - использование модуля math. Модуль math предоставляет различные функции для работы с числами, включая функции округления. Например, функция math.floor() эквивалентна методу floor(), а функция math.ceil() эквивалентна методу ceil(). Кроме того, модуль math также предоставляет функции округления вниз и вверх до ближайшего целого значения, а также функцию для округления до определенного количества знаков после запятой.
import math
num = 3.7
floored_num = math.floor(num)
ceiled_num = math.ceil(num)
print(floored_num) # Output: 3
print(ceiled_num) # Output: 4Кэширование результатов функций в Python 🐍
💬 Что такое кеширование?
Кеширование позволяет сохранять результаты выполнения функций, избегая повторных вычислений. Это полезно, особенно если функция часто вызывается с одними и теми же данными или выполняет сложные операции.
❓ Как это сделать?
В Python есть модуль
functools, включающий декоратор lru_cache, который автоматически кеширует результаты функции.
🥸 Зачем это нужно?
Кеширование ускоряет программу, сохраняя результаты вычислений функций. Это особенно полезно при работе с большими данными или сложными расчетами.
Пример:
from functools import lru_cache
@lru_cache(maxsize=20) # 20 - это максимальное количество "запоминаний"
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10)) # Первый вызов - вычисляем
print(fibonacci(10)) # Результат уже закеширован
💻 Теперь вы знаете, как использовать кеширование в Python для улучшения производительности кода.
Оставайтесь с нами для еще больше интересной информации о Python! 😉🥳Привет, Python и не Python герои! 🐍
С наступающим 2024 годом! 🥳
От имени всей команды сообщества Shcoder, мы желаем вам бесконечного цикла успеха и счастья, чтобы ваш код всегда был чистым, а переменные — всегда именованными с любовью! 💻❤️
Пусть новый год принесет вам меньше багов, больше интересных проектов и нового опыта! 🎁🐞
Пусть ваши проекты будут масштабируемыми, а итерации — всегда успешными! 🔄🚀
Пусть у вас всегда будет актуальная и понятная документация! 📚🤝
С наступающим вас, Шкодеры! Пусть 2024 год будет полон новых версий ваших идей! 🥳🔍
🥳🥳🥳 УРА! 🥳🥳🥳
⭕️ Создать список, который хранит в себе объекты в Python (на примере списка с людьми)
Python предоставляет нам множество возможностей для работы с данными. Одной из таких возможностей является использование списков для хранения объектов. Сейчас мы рассмотрим, как создать класс, создать объекты на основе этого класса, поместить эти объекты в список и обратиться к ним.
👀 1. Создание класса
Для начала, давайте создадим класс, который будет представлять людей. Класс будет иметь атрибуты "имя" и "возраст". Вот пример такого класса:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
👀 2. Создание объектов
Теперь, когда у нас есть класс, мы можем создать объекты на его основе. Например, давайте создадим двух людей:
person1 = Person("John", 25)
person2 = Person("Alice", 30)
👀 3. Помещение объектов в список
Чтобы поместить объекты в список, мы можем использовать метод append(). Например, чтобы создать список людей и добавить туда наших двух людей, мы можем написать следующий код:
people = []
people.append(person1)
people.append(person2)
Теперь у нас есть список people, в котором хранятся объекты, представляющие двух людей.
👀 4. Обращение к объектам в списке
Чтобы обратиться к объектам в списке, мы можем использовать индексы. Например, чтобы получить имя первого человека в списке people, мы можем написать следующий код:
first_person_name = people[0].name
Теперь в переменной first_person_name будет храниться значение "John".🤟 Суббота - время отдыхать и решать задачки на Codewars или leetcode? 🤟
💻 В этот раз задачи решаю на кодварс — закрываю год на любимом алгоритмическом сайте!
https://youtu.be/6y19_r6XxvE
▶️ Вышел скучный, но полезный видос по Python! ▶️
❗️В нем мы разбираем, что такое рекурсия на примерах❗️
Если формат зайдет, то продолжим в том же духе!
https://www.youtube.com/watch?v=w3FlW2THtUk
🔐 Модуль
secrets в Python: Защита вашей информации
✨ Модуль secrets предоставляет инструменты для создания безопасных случайных данных, сложнее предсказать.
🔑 Функции модуля secrets:
1. secrets.choice(sequence): Выбирает случайный элемент из последовательности. Полезно для генерации случайных выборок или паролей из определенного набора символов.
2. secrets.randbelow(n): Возвращает случайное число от 0 до n-1. Используется для генерации случайных чисел в определенном диапазоне.
3. secrets.randbits(k): Генерирует k случайных битов. Полезно для создания случайных битовых строк или чисел.
4. secrets.token_bytes(nbytes=None): Генерирует безопасную случайную последовательность байтов длиной nbytes (по умолчанию - 32 байта).
5. secrets.token_hex(nbytes=None): Генерирует безопасную случайную строку в шестнадцатеричном формате длиной nbytes (по умолчанию - 32 байта).
6. secrets.token_urlsafe(nbytes=None): Генерирует безопасную случайную URL-совместимую строку длиной nbytes (по умолчанию - 32 байта).
7. secrets.compare_digest(a, b): Сравнивает две строки для предотвращения временных атак. Это полезно при сравнении хэшей паролей или токенов без утечки информации о длине сравниваемых строк.
🔍 Почему использовать secrets лучше?
- secrets предоставляет криптографически безопасные данные, что делает их сложными для предсказания.
- Эти функции обеспечивают высокий уровень безопасности при генерации случайных данных, паролей и токенов в Python.
Используйте модуль secrets для защиты вашей информации и обеспечения безопасности ваших данных в Python. 🔐✨❕ Оператор моржа в Python :=❕
В программировании, оператор моржа в Python, также известный как оператор присваивания с условием, является нововведением в версии Python 3.8. Он предоставляет удобный способ проверить условие и присвоить значение переменной, если условие истинно.
Оператор моржа в Python обозначается двумя символами ":= ", за которыми следует символ ">" для сравнения. Этот оператор может быть использован в выражениях if и while, чтобы одновременно проверить условие и присвоить значение переменной. Например:
if (x := some_function()) > 10:
print("x is greater than 10")
else:
print("x is less than or equal to 10")
В этом примере, если значение, возвращаемое функцией some_function(), больше 10, то оно будет присвоено переменной x, и будет выведено сообщение "x is greater than 10". В противном случае будет выведено сообщение "x is less than or equal to 10".
➕ Преимущества использования оператора моржа
Оператор моржа предлагает несколько преимуществ, которые могут значительно упростить кодирование. Во-первых, он позволяет объединить проверку условия и присваивание значения в одной строке, что делает код более компактным и легким для чтения. Во-вторых, он устраняет необходимость использования временных переменных для хранения результатов выражений, что уменьшает количество кода и повышает эффективность. Наконец, оператор моржа может быть использован в циклах, что позволяет более эффективно использовать ресурсы и улучшить производительность программы.