Pythoner
7.23K subscribers
861 photos
27 videos
4 files
655 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
➡️Что такое кеширование?

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

➡️Как это сделать?

В 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 для улучшения производительности кода.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114👍4
✈️frozensets используются для создания неизменяемых множеств.

➡️Основные особенности frozensets:

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

⬆️В примере на фото мы создали frozenset с элементами. Попытка добавить элемент вызывает ошибку, так как frozensets неизменяемы. Затем frozenset используется как ключ в словаре.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍742🔥1
✈️Что такое асинхронное программирование?
Асинхронное программирование - это способ написания кода, позволяющий выполнять несколько задач одновременно без блокировки основного потока выполнения. В 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 по асинхронному программированию
Статья на Real Python: "Async IO in Python: A Complete Walkthrough"

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7🔥3
➡️Функция 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


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍219🔥2
➡️Boto3 помогает разработчикам упростить работу с AWS. Она предоставляет простой и понятный способ взаимодействия с различными сервисами AWS, такими как создание и настройка виртуальных серверов, управление файловым хранилищем, отправка сообщений и многое другое. Это позволяет автоматизировать различные задачи и сделать работу с AWS более эффективной.

➡️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/

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64👍2
🔥21🤣10😢4👍32
➡️Разбор темы 1: Определение DDoS-атаки

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

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

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

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

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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥4
➡️Использование оператора %s для форматирования строк

Оператор %s используется для вставки значения переменной в строку. Для этого нужно указать %s внутри строки и затем после строки поставить знак %, за которым следует переменная, значения которой нужно вставить.

Пример:

name = "John"
age = 25
print("Меня зовут %s и мне %s лет." % (name, age))

Вывод:

Меня зовут John и мне 25 лет.

⬆️В этом примере мы использовали оператор %s для вставки значений переменных name и age в строку. Мы передали эти значения в виде кортежа (name, age) после знака %.

➡️Форматирование чисел с помощью оператора %s

Оператор %s также может использоваться для форматирования чисел. Для этого нужно указать %s внутри строки и затем после строки поставить знак %, за которым следует число, значение которого нужно вставить.

Пример:

number = 42
print("Ответ на главный вопрос жизни: %s" % number)

Вывод:

Ответ на главный вопрос жизни: 42

⬆️В этом примере мы использовали оператор %s для вставки значения переменной number в строку.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1053🔥2
Функция index в Python используется для нахождения индекса первого вхождения определенного элемента в последовательности.

➡️Работа функции index

Функция index принимает в качестве аргумента элемент, который мы хотим найти, и возвращает индекс первого вхождения этого элемента в списке. Если элемент не найден, функция вызывает исключение ValueError. Например, если у нас есть список чисел [1, 2, 3, 4, 5] и мы хотим найти индекс числа 3, мы можем использовать функцию index следующим образом:

numbers = [1, 2, 3, 4, 5]
index = numbers.index(3)
print(index)


⬆️В этом примере функция index вернет значение 2, так как число 3 находится на позиции с индексом 2 в списке.

➡️Обработка исключений

Когда мы используем функцию index, мы должны быть осторожны, потому что если элемент не найден в списке, это вызовет исключение ValueError. Чтобы избежать ошибок, мы можем использовать конструкцию try-except для обработки исключений. Например:

numbers = [1, 2, 3, 4, 5]
try:
index = numbers.index(6)
print(index)
except ValueError:
print("Элемент не найден в списке.")


⬆️В этом примере, если элемент 6 не найден в списке numbers, функция index вызовет исключение ValueError, и вместо того, чтобы прервать выполнение программы, мы перехватываем исключение и выводим сообщение "Элемент не найден в списке."

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥42
➡️Использование метода .count()

Метод .count() в Python используется для подсчета количества вхождений определенного элемента в строке, списке или кортеже. Синтаксис метода выглядит следующим образом:

<obj>.count(<value>)


⬆️где <obj> - объект, в котором мы ищем, а <value> - значение, которое мы хотим посчитать.

➡️Примеры использования метода .count()

Давайте рассмотрим несколько примеров использования метода .count().

➡️Подсчет количества символов в строке:

s = "Hello, World!"
count = s.count("o")
print(count) # Output: 2


➡️Подсчет количества элементов в списке:

numbers = [1, 2, 3, 4, 2, 1, 2]
count = numbers.count(2)
print(count) # Output: 3


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍832🔥2
➡️PDF-файлы являются одним из наиболее удобных форматов для обмена документами. В Python существует несколько библиотек, позволяющих создавать и редактировать PDF-файлы. Одна из самых популярных библиотек для этой цели - PyPDF2.🛠 Чтобы начать работу с PyPDF2, необходимо установить эту библиотеку с помощью pip:
pip install PyPDF2


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

➡️Теперь, давайте создадим простой PDF-файл с текстом "Пример создания PDF в Python":
import PyPDF2

# Создание объекта PDF
pdf = PyPDF2.PdfFileWriter()

# Создание страницы и добавление текста
page = pdf.addPage()
page.mergePage(page)

text = "Пример создания PDF в Python"

# Добавление текста на страницу
page.drawText(100, 500, text)

# Сохранение PDF в файл
with open("example.pdf", "wb") as f:
pdf.write(f)

print("PDF файл успешно создан!")

⬆️Это простой пример создания PDF-файла с помощью Python и библиотеки PyPDF2. Однако, существует множество других библиотек, таких как reportlab или FPDF, предоставляющих более широкие возможности для создания и редактирования PDF-документов в Python.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134🔥41
➡️"Чистая" функция - это функция, которая при выполнении одного и того же входного значения всегда возвращает одинаковый результат и не имеет побочных эффектов. То есть, она не влияет на состояние программы или внешние переменные. Результат работы "чистой" функции зависит только от переданных ей аргументов.

➡️Пример чистой функции

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

def double(number):
return number * 2


⬆️Эта функция является "чистой", потому что она всегда возвращает удвоенное значение переданного числа и не имеет побочных эффектов. Независимо от контекста выполнения и внешних переменных, результат работы этой функции будет одинаковым при одинаковом входном значении.

➡️Пример нечистой функции

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

my_list = []

def add_to_list(value):
my_list.append(value)


⬆️Эта функция не является "чистой", потому что она изменяет состояние программы путем добавления значения в глобальный список my_list. Результат работы этой функции зависит не только от переданного аргумента, но и от текущего состояния списка my_list.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥4
🔎Многие сталкиваются с проблемой, что кол очень долго выполняется, то бишь не оптимизирован. Сейчас мы это исправим.

➡️Для примера возьмём функцию вычисления последовательности Фибоначчи:
def fibonacci(n): 
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)

for i in range(50):
print(i, fibonacci(i))


⬆️Если сейчас мы запустим код, то он будет выполняться ну очень долго.

➡️Теперь давайте изучим код. Если подумать, то понятно что у нас много раз просчитывается одни и те же значения. Так давайте будем сохранять то что уже посчитали! Для этого можно использовать декоратор lru_cache из встроенного модуля functools:
from functools import lru_cache


@lru_cache
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)

for i in range(50):
print(i, fibonacci(i))


⬆️Так, данный код будет выполняться в рааазы быстрее.
Подробнее про этот декоратор можно почитать здесь.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥3
😁22🤣7🔥53👍3
🔎Иногда, при разработке программного обеспечения на Python, мы можем столкнуться с ситуациями, когда необходимо явно указать на наличие ошибки.

➡️Когда мы пишем программы, мы стараемся их делать максимально надежными и безопасными. Однако, иногда может возникнуть ситуация, когда мы хотим явно указать на наличие проблемы. Например, если в функции передаются некорректные аргументы или программа не может продолжить выполнение из-за некорректного состояния. В таких случаях мы можем создать исключение с помощью оператора raise, чтобы прервать нормальное выполнение программы и показать, что что-то пошло не так.

➡️Использование оператора raise

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

➡️Вот пример использования оператора raise:

def divide_numbers(a, b):
if b == 0:
raise ValueError("Делитель не может быть нулем")
return a / b

try:
result = divide_numbers(10, 0)
print("Результат:", result)
except ValueError as e:
print("Ошибка:", str(e))


⬆️В этом примере мы определяем функцию divide_numbers, которая делит одно число на другое. Если второе число равно нулю, мы вызываем исключение ValueError с сообщением "Делитель не может быть нулем". Затем мы обрабатываем это исключение с помощью блока try-except, чтобы поймать и обработать ошибку.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135🔥2
➡️PyWebCopy - это инструмент на языке Python, который позволяет скачивать целые веб-сайты и их содержимое для локального использования.

🔎Основные возможности pywebcopy

PyWebCopy обладает несколькими основными функциями, которые делают его полезным инструментом для скачивания веб-сайтов:

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

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

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

➡️Как использовать pywebcopy

Для использования pywebcopy вам потребуется установить его с помощью pip. После установки вы можете импортировать его в свой код Python и использовать.

Давайте рассмотрим простой пример использования pywebcopy для скачивания веб-сайта. Предположим, что у нас есть веб-сайт с URL-адресом "[https://www.example.com](https://www.example.com/)" и мы хотим скачать его для дальнейшего использования офлайн.

from pywebcopy import save_webpage

url = '<https://www.example.com>'
project_folder = 'example_website'

save_webpage(url, project_folder)


⬆️В этом примере мы использовали метод save_webpage из pywebcopy для скачивания веб-сайта по указанному URL и сохранения его в папке проекта "example_website". После выполнения этого кода, мы получим локальную копию веб-сайта, включая все его страницы и ресурсы.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥1
➡️Добавление цвета к текстовому выводу

Черно-белый текст в терминале может быть однообразным и трудным для чтения. Colorama предоставляет набор заранее определенных последовательностей ANSI-escape, которые можно использовать для изменения цвета переднего и заднего плана, а также применения стилей текста, таких как жирный, подчеркнутый и курсивный. Вот пример использования Colorama для вывода красного текста:

from colorama import Fore

print(Fore.RED + "Это красный текст" + Fore.RESET)


➡️Совместимость с различными терминалами

Colorama совместим с различными типами терминалов и операционными системами. Он автоматически определяет, поддерживает ли терминал ANSI-escape последовательности или нет, и включает изменение цвета и стиля соответственно. Это гарантирует правильное отображение цветного текста независимо от используемого терминала.

➡️Упрощение настройки вывода

Colorama предоставляет удобный API для установки цвета переднего и заднего плана, а также применения стилей текста. Вот пример использования Colorama для создания визуально привлекательного вывода:

from colorama import Fore, Back, Style

print(Fore.BLUE + "Синий текст на белом фоне" + Style.RESET_ALL)
print(Back.GREEN + "Зеленый фон" + Back.RESET)
print(Style.BRIGHT + "Яркий текст" + Style.RESET_ALL)


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥2
➡️Библиотека Transliterate обеспечивает простой перевод текста между кириллицей и латиницей в Python. Установка производится командой pip install transliterate.

from transliterate import translit

text = "Привет, мир!"
transliterated_text = translit(text, 'ru', reversed=True)
print(transliterated_text)


➡️Это удобное средство при работе с многоязычными данными.
➡️Документация содержит дополнительные сведения и примеры использования.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥3
📦Установка пакета

Одной из первых команд, которую вы можете использовать с pip, является команда install. Она позволяет установить пакет или несколько пакетов из Python Package Index (PyPI). Например, чтобы установить пакет requests, вы можете использовать следующую команду:

pip install requests


Вы также можете указать конкретную версию пакета, добавив == после его имени. Например, чтобы установить версию 2.22.0 пакета requests, вы можете использовать следующую команду:

pip install requests==2.22.0


➡️Обновление пакета

Команда install также может использоваться для обновления уже установленных пакетов. Если у вас уже установлена более старая версия пакета, вы можете обновить ее до последней версии, используя следующую команду:

pip install --upgrade requests


⬆️Эта команда обновит пакет requests до последней доступной версии.

➡️Удаление пакета

Если вам больше не нужен определенный пакет, вы можете удалить его с помощью команды uninstall. Например, чтобы удалить пакет requests, вы можете использовать следующую команду:

pip uninstall requests


Вы также можете указать конкретную версию пакета, которую вы хотите удалить. Например, чтобы удалить версию 2.22.0 пакета requests, вы можете использовать следующую команду:

pip uninstall requests==2.22.0


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍118🔥4