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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
👍72
Что выдаст код выше
Anonymous Quiz
43%
True
47%
False
3%
None
7%
Error
👍6🤨42😐1
👀Разбор

Весь нюанс в том, что var - список с каким-то содержимым из множества элементов
А var2 - список, который содержит в себе только 1 элемент —> var (как бы ссылаясь на него)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓7🔥5👍4
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33😁7👍5
🕔Одним из главных преимуществ библиотеки delorean является её простота использования. Она предоставляет разработчикам возможность легко создавать, манипулировать и форматировать временные объекты.

💬Пример кода
import delorean

# Создание объекта текущего времени
now = delorean.now()
print("Текущее время:", now)

# Преобразование времени в строку в формате ISO
iso_format = now.datetime.isoformat()
print("ISO формат:", iso_format)


➡️Работа с временными зонами

Работа с временными зонами может быть сложной задачей, но delorean значительно облегчает этот процесс. Библиотека предоставляет удобные методы для преобразования времени между разными временными зонами, учитывая все нюансы и правила переходов между летним и стандартным временем. Это делает её незаменимым инструментом для приложений, которые должны учитывать временные зоны своих пользователей.

💬Пример кода
import delorean

# Создание объекта времени в определённой временной зоне
dt = delorean.parse("2023-10-10 10:00:00", timezone="UTC")

# Преобразование времени в другую временную зону
local_dt = dt.shift("US/Eastern")
print("Время в восточной временной зоне США:", local_dt)


➡️Временные интервалы и манипуляции

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

💬Пример кода
import delorean

# Создание двух объектов времени
start = delorean.parse("2023-10-10 10:00:00")
end = delorean.parse("2023-10-10 12:30:00")

# Вычисление разницы между двумя временными точками
diff = end - start
print("Разница во времени:", diff)

# Добавление временного интервала
new_time = start + delorean.timedelta(hours=2)
print("Новое время:", new_time)


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍7🔥2😐1
✈️Pywebview — это легковесная библиотека для создания графических приложений на Python с использованием веб-технологий. Она позволяет разрабатывать интерфейсы с помощью HTML, CSS и JavaScript, а также интегрировать их с логикой на Python. Pywebview предоставляет простой способ взаимодействия между веб-интерфейсом и кодом на Python.

➡️Установка pywebview

💬Первым шагом к использованию pywebview является его установка. К счастью, это очень просто. Достаточно выполнить следующую команду:

pip install pywebview

⬆️Теперь у нас есть все необходимое, чтобы начать работу с pywebview.

➡️Создание простого окна

После установки pywebview, давайте создадим простое окно, которое будет отображать наш веб-контент. Вот базовый пример:

import webview

# Создаем окно с URL
webview.create_window('Пример pywebview', '<https://example.com>')

# Запускаем приложение
webview.start()


⬆️Этот код создаст окно с названием "Пример pywebview" и загрузит страницу по указанному URL. Это отличный способ быстро превратить ваше веб-приложение в настольное приложение.

Больше примеров и документации: https://github.com/r0x0r/pywebview

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥3
✈️Сегодня мы рассмотрим библиотеку python-nubia, которая предназначена для создания командных интерфейсов в Python. Эта библиотека была разработана компанией Facebook и, хотя сейчас она больше не развивается, она все еще заслуживает внимания за свои уникальные возможности и подходы.

➡️Удобство использования

Одним из ключевых преимуществ python-nubia является её простота и удобство использования. Библиотека позволяет легко создавать командные интерфейсы, используя аннотации и декораторы. Это делает код более читабельным и поддерживаемым. Разработчики могут быстро добавлять новые команды и опции, что значительно ускоряет процесс разработки.

➡️Гибкость и расширяемость

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

Примеры использования

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍2🔥2
2👍2
Что выдаст код выше
Anonymous Quiz
53%
True
30%
False
3%
None
5%
Error
9%
123456
🤨8👍3🤔2👀1
🐍Разбор

Оператор «is» проверяет идентичность объектов. Таким образом мы сравниваем идентичность переменной C, которая указывает на ячейку памяти и некого текста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥1
➡️Что такое Numba?

Numba - это JIT-компилятор (Just-In-Time), который преобразует Python и NumPy код в быстрый машинный код. Это позволяет значительно ускорить выполнение вычислительно-интенсивных задач.

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

Использовать Numba очень просто! Вот пример:

from numba import jit
import numpy as np

@jit(nopython=True)
def sum_of_squares(arr):
sum = 0
for i in range(arr.shape[0]):
sum += arr[i]**2
return sum

# Пример использования
arr = np.arange(1000000)
result = sum_of_squares(arr)
print(f"Сумма квадратов: {result}")

⬆️Что происходит?

1️⃣Мы импортируем декоратор @jit из Numba

2️⃣Применяем декоратор к нашей функции

3️⃣Numba компилирует функцию при первом вызове

4️⃣Последующие вызовы используют скомпилированную версию

⬆️Результаты

На больших массивах Numba может ускорить код в десятки раз! Например, для массива из миллиона элементов:

- Обычный Python: ~1 секунда
- С Numba: ~0.01 секунды

➡️Советы по использованию

💬Используйте режим nopython=True для максимальной производительности
💬Numba лучше всего работает с числовыми типами данных и NumPy массивами
💬Избегайте использования Python-объектов внутри jit-функций

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
👍62
👍6🤔51🤓1
🐍Разбор

z = [x, y] создает список z, содержащий два элемента: список x и список y. Таким образом, z — это [[1, 2, 3], [4, 5]]. y.append(6) добавляет элемент 6 в конец списка y. После этой операции y становится [4, 5, 6]. Поскольку z содержит ссылки на x и y, любые изменения, внесенные в x или y, будут отражены в z. Когда y изменяется путем добавления 6, это изменение становится видимым в z, поскольку z содержит ссылку на исходный список y.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥2
➡️Что такое декораторы?

Декораторы в Python - это мощный инструмент для изменения поведения функций или классов без изменения их исходного кода. Они позволяют "обернуть" существующую функцию дополнительной функциональностью.

➡️Зачем нужен functools.wraps?

При создании декораторов возникает проблема: метаданные декорируемой функции (такие как имя и документация) теряются. Здесь на помощь приходит functools.wraps!

➡️Пример декоратора без functools.wraps

def my_decorator(func):
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper

@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")

print(greet.__name__) # Выводит: wrapper
print(greet.__doc__) # Выводит: None


➡️Пример с использованием functools.wraps

from functools import wraps

def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper

@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")

print(greet.__name__) # Выводит: greet
print(greet.__doc__) # Выводит: Эта функция приветствует пользователя


🔎Преимущества использования functools.wraps:
1. Сохранение метаданных функции
2. Улучшение отладки и документирования
3. Совместимость с инструментами анализа кода

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥3
✈️Модуль weakref предоставляет инструменты для создания слабых ссылок на объекты.

➡️Что такое слабые ссылки?

Слабые ссылки позволяют ссылаться на объект без увеличения его счетчика ссылок. Это означает, что объект может быть удален сборщиком мусора, даже если на него есть слабая ссылка.

➡️Пример использования weakref:

import weakref

class MyClass:
pass

obj = MyClass()
weak_ref = weakref.ref(obj)

print(weak_ref()) # Выводит объект MyClass
del obj
print(weak_ref()) # Выводит None


🔎Заключение

Использование модуля weakref позволяет разработчикам Python лучше контролировать управление памятью в своих программах. Это особенно полезно при работе с большими объемами данных или в системах с ограниченными ресурсами.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🔥6👍42
✈️Legacy код, или унаследованный код, - это существующая кодовая база, которая продолжает использоваться, несмотря на то, что она может быть устаревшей, плохо структурированной или трудной для поддержки.

➡️Характеристики Legacy кода
💬Устаревшие технологии или методологии
💬Отсутствие или недостаточность документации
💬Сложность в поддержке и расширении
💬Высокая связность и низкая сплоченность

➡️Пример Legacy кода

# Legacy код на Python
def calculate_total(items):
total = 0
for item in items:
total = total + item['price'] * item['quantity']
return total

# Современный эквивалент
def calculate_total(items):
return sum(item['price'] * item['quantity'] for item in items)


➡️Проблемы, связанные с Legacy кодом
💬Сложность внесения изменений и добавления новых функций
💬Повышенный риск появления ошибок при модификации
💬Трудности в интеграции с современными технологиями
💬Зависимость от устаревших библиотек и фреймворков

➡️Стратегии работы с Legacy кодом
💬Постепенный рефакторинг
💬Написание тестов для существующего кода
💬Документирование существующей функциональности
💬Модульная замена частей системы

🔎Заключение

Работа с Legacy кодом - это неизбежная часть жизни многих разработчиков. Хотя он может представлять сложности, правильный подход к его обработке может значительно улучшить качество и поддерживаемость программного обеспечения.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🔥3
✈️FastStream - это мощная библиотека для Python, которая упрощает создание и управление потоковыми приложениями. Она предоставляет удобный интерфейс для работы с различными брокерами сообщений, такими как Kafka и RabbitMQ.

➡️Основные преимущества FastStream
💬Простота использования
💬Высокая производительность
💬Поддержка асинхронного программирования
💬Легкая интеграция с существующими проектами

➡️Установка FastStream

Для начала работы с FastStream, установите библиотеку с помощью pip:

pip install faststream


➡️Давайте рассмотрим простой пример использования FastStream с Kafka:

from faststream import FastStream, Logger
from faststream.kafka import KafkaBroker

# Создаем брокер Kafka
broker = KafkaBroker("localhost:9092")

# Инициализируем FastStream
app = FastStream(broker)

# Определяем обработчик сообщений
@broker.subscriber("input-topic")
async def process_message(msg: str, logger: Logger):
logger.info(f"Получено сообщение: {msg}")
# Обработка сообщения
processed_msg = msg.upper()
# Отправка обработанного сообщения
await broker.publish(processed_msg, "output-topic")

# Запускаем приложение
if __name__ == "__main__":
app.run()


⬆️В этом примере мы:
1. Импортируем необходимые модули из FastStream.
2. Создаем брокер Kafka, указывая адрес сервера.
3. Инициализируем FastStream с нашим брокером.
4. Определяем функцию-обработчик сообщений с декоратором @broker.subscriber.
5. В обработчике мы логируем полученное сообщение, преобразуем его в верхний регистр и отправляем в другую тему.
6. Запускаем приложение с помощью app.run().

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥3
✈️Что такое concurrent.futures?

Представьте, что вы супергерой, способный делать несколько дел одновременно. Это и есть concurrent.futures! Этот мощный модуль в Python позволяет вам выполнять задачи параллельно, экономя драгоценное время и ресурсы.

➡️Основные инструменты

В нашем арсенале два главных оружия:
💬ThreadPoolExecutor - для задач, связанных с вводом-выводом
💬ProcessPoolExecutor - для вычислительно-интенсивных задач

➡️Простой пример использования ThreadPoolExecutor:

import concurrent.futures
import time

def task(name):
print(f"Задача {name} начата")
time.sleep(2)
return f"Задача {name} завершена"

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
tasks = [executor.submit(task, f"#{i}") for i in range(5)]

for future in concurrent.futures.as_completed(tasks):
print(future.result())

⬆️Мы только что создали многопоточное приложение, которое выполняет 5 задач параллельно, используя пул из 3 потоков.

🔎Преимущества использования concurrent.futures
💬Повышение производительности
💬Простота использования
💬Автоматическое управление потоками
- 💬Гибкость в настройке

➡️Заключение

Поздравляем! Теперь вы знаете, как создавать многопоточные приложения с помощью concurrent.futures. Это мощный инструмент, который поможет вам писать более эффективный и быстрый код. Не забывайте практиковаться и экспериментировать - ведь в мире многопоточности возможности безграничны!

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