Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
🔐 Модуль 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. 🔐
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤟 Суббота - время отдыхать и решать задачки на Codewars или leetcode? 🤟

💻 В этот раз задачи решаю на кодварс — закрываю год на любимом алгоритмическом сайте!

https://youtu.be/6y19_r6XxvE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⭕️ Создать список, который хранит в себе объекты в 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".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🥳Привет, Python и не Python герои! 🐍

С наступающим 2024 годом! 🥳

От имени всей команды сообщества Shcoder, мы желаем вам бесконечного цикла успеха и счастья, чтобы ваш код всегда был чистым, а переменные — всегда именованными с любовью! 💻❤️

Пусть новый год принесет вам меньше багов, больше интересных проектов и нового опыта! 🎁🐞

Пусть ваши проекты будут масштабируемыми, а итерации — всегда успешными! 🔄🚀

Пусть у вас всегда будет актуальная и понятная документация! 📚🤝

С наступающим вас, Шкодеры! Пусть 2024 год будет полон новых версий ваших идей! 🥳🔍

🥳🥳🥳 УРА! 🥳🥳🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻5👍3🥰1🤯1
Кэширование результатов функций в 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! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
❗️ Округление чисел в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что выдаст код выше?
Anonymous Quiz
5%
12
2%
6
61%
222222
2%
222
9%
66
20%
Error
1%
Не знаю
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

'2' + '2' —> '22' текстовый формат.
При умножении текста на число, текст дублируется столько раз, чему равно число.
В нашем случае '22' * 3 —> '222222'

Если было бы, например 'hello' * 3 —> 'hellohellohello'
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Умер создатель языка программирования Pascal Николаус Вирт

Ему было 89 лет.
По данным iTWire, Вирт умер в своём доме в окружении родных 1 января 2024 года.

Почитать подробнее можно тут

Кто из вас писал на паскале? 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻6
‼️‼️

📹 Думаю, что один из последних видосов по Tkinter вышел на канале! 📹

Есть тут еще олдовые любители Tk GUI?


(показываю варианты реализации paint приложения, ссылаясь на авторов. Все исходники в описании)

https://www.youtube.com/watch?v=YtTAdFCWsHc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Лучшие пакеты PyPi !?

Решил проверить, какие вообще самые популярные (по каким-то критериям, хз сам каким) библиотеки на PyPi

PyPI (Python Package Index) — это официальный репозиторий пакетов для языка программирования Python. Здесь собраны тысячи библиотек, модулей и приложений, которые могут быть полезны для разработчиков Python.

https://pypistats.org/top
https://hugovk.github.io/top-pypi-packages/

Вот два ресурса. Мне понравился больше первый.

Для ленивых предлагаю скрин!

Стоит ли вообще сделать краткий обзор этих либ из списка?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👩‍💻 Популярная библиотека 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Асинхронное программирование в 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 вместе с нами! 🚀🐍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🐈 Можно ли положить сайт, делая к нему запросы через Python?


🤙 Разбор темы 1: Определение DDoS-атаки

DDoS-атака (Distributed Denial of Service) - это атака, направленная на перегрузку ресурсов сервера или сети путем отправки большого количества запросов с целью обрушить его работу. Возникает вопрос, можно ли провести подобную атаку с помощью Python. Ответ - да, это технически возможно. Однако, важно отметить, что DDoS-атака является противозаконной и незаконным использование таких методов может повлечь за собой серьезные юридические последствия.

🤙 Разбор темы 2: Python и нагрузочное тестирование

Python является мощным языком программирования, который позволяет автоматизировать множество задач, включая отправку запросов к веб-сайтам. Однако, использование Python для нагрузочного тестирования, то есть для проверки производительности сайта под высокой нагрузкой, не означает, что вы сможете сразу "положить" сайт. Нагрузочное тестирование проводится с целью определить, как сайт будет работать при реальных условиях использования, и в большинстве случаев не представляет угрозу для его доступности.

🤙 Разбор темы 3: Защита от DDoS-атак

У веб-сайтов существуют механизмы защиты от DDoS-атак, которые позволяют обнаруживать и отражать подобные попытки. Это может быть использование специальных сервисов, фильтрация трафика или анализ поведения пользователей. Поэтому, даже если вы попытаетесь "положить" сайт с помощью Python, шансы на успех будут невелики.

Пробовали ли вы когда-нибудь что-нибудь положить?

Я помню, как когда-то давно пытался положить какой-то html'ный заброшенный сайт при помощи команды ping 🏓
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥰1😁1