🧠 Декораторы: украшение функций 🎀
Декораторы позволяют добавлять новую функциональность к функциям без изменения их кода. Это мощный инструмент для повышения читаемости и повторного использования кода.
🔍 Применение:
Логирование.
Проверка прав доступа.
Измерение времени выполнения.
🔑 Результат выполнения:
Декораторы позволяют добавлять новую функциональность к функциям без изменения их кода. Это мощный инструмент для повышения читаемости и повторного использования кода.
🔍 Применение:
Логирование.
Проверка прав доступа.
Измерение времени выполнения.
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"Execution time: {end - start:.2f} seconds")
return result
return wrapper
@timer
def slow_function():
time.sleep(2)
print("Function finished!")
slow_function()
🔑 Результат выполнения:
Function finished!
Execution time: 2.00 seconds
👍2
🧪 Тестирование с использованием unittest 🧹
Модуль unittest предоставляет встроенные инструменты для написания тестов и проверки работоспособности кода.
🔍 Применение:
Автоматическое тестирование функций.
Обеспечение стабильности кода.
Выявление ошибок до развертывания.
🔑 Результат выполнения:
Модуль unittest предоставляет встроенные инструменты для написания тестов и проверки работоспособности кода.
🔍 Применение:
Автоматическое тестирование функций.
Обеспечение стабильности кода.
Выявление ошибок до развертывания.
import unittest
def add(a, b):
return a + b
class TestMath(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
self.assertEqual(add(-1, 1), 0)
if __name__ == "__main__":
unittest.main()
🔑 Результат выполнения:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
🔥1
🌟Работа с таймерами через sched ⏳
Модуль sched позволяет планировать выполнение задач с точным учетом времени.
🔍 Применение:
Запуск задач по расписанию.
Автоматизация повторяющихся процессов.
Создание таймеров.
🔑 Результат выполнения:
Через 3 секунды вывод:
Модуль sched позволяет планировать выполнение задач с точным учетом времени.
🔍 Применение:
Запуск задач по расписанию.
Автоматизация повторяющихся процессов.
Создание таймеров.
import sched
import time
scheduler = sched.scheduler(time.time, time.sleep)
def print_message():
print("Task executed!")
# Планируем задачу через 3 секунды
scheduler.enter(3, 1, print_message)
scheduler.run()
🔑 Результат выполнения:
Через 3 секунды вывод:
Task executed!
❤3
🚦 Работа с потоками через threading 🧵
Модуль threading позволяет создавать потоки, что упрощает выполнение нескольких задач одновременно.
🔍 Применение:
Многозадачность.
Реакция на события.
Параллельная обработка данных.
🔑 Результат выполнения:
Модуль threading позволяет создавать потоки, что упрощает выполнение нескольких задач одновременно.
🔍 Применение:
Многозадачность.
Реакция на события.
Параллельная обработка данных.
import threading
import time
def task(name):
print(f"Thread {name} starting")
time.sleep(2)
print(f"Thread {name} finished")
thread1 = threading.Thread(target=task, args=("A",))
thread2 = threading.Thread(target=task, args=("B",))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
🔑 Результат выполнения:
Thread A starting
Thread B starting
Thread A finished
Thread B finished
👍3❤1
Обработка URL с urllib.parse 🌐
Модуль urllib.parse помогает разбирать и создавать URL-адреса.
🔍 Применение:
Создание запросов к API.
Разбор адресов.
Управление параметрами.
🔑 Результат выполнения:
Модуль urllib.parse помогает разбирать и создавать URL-адреса.
🔍 Применение:
Создание запросов к API.
Разбор адресов.
Управление параметрами.
from urllib.parse import urlparse
url = "https://example.com/path?name=Alice"
parsed_url = urlparse(url)
print("Domain:", parsed_url.netloc)
print("Path:", parsed_url.path)
print("Query:", parsed_url.query)
🔑 Результат выполнения:
Domain: example.com
Path: /path
Query: name=Alice
🔥3
Челлендж: «Поиск пиков»
Привет, кодеры! Сегодня будем работать с массивами.
📈 Суть задачи:
Напишите функцию, которая находит все пики в массиве. Пиком считается элемент, который больше соседних слева и справа. Граничные элементы не считаются.
Пример:
✅ Усложнение для профи:
Найдите индекс каждого пика, а не только их значения.
Реализуйте алгоритм с минимальной сложностью.
💡 Подсказки:
Пройдитесь по массиву циклом, начиная со второго элемента и заканчивая предпоследним.
Используйте индексы, чтобы проверять соседние элементы.
Если хотите оптимизировать: изучите двоичный поиск для таких задач.
Кто сможет найти все пики? Пишите свои ответы! 🏔️
Привет, кодеры! Сегодня будем работать с массивами.
📈 Суть задачи:
Напишите функцию, которая находит все пики в массиве. Пиком считается элемент, который больше соседних слева и справа. Граничные элементы не считаются.
Пример:
Input: [1, 3, 7, 1, 2, 6, 3, 2]
Output: [7, 6]
✅ Усложнение для профи:
Найдите индекс каждого пика, а не только их значения.
Реализуйте алгоритм с минимальной сложностью.
💡 Подсказки:
Используйте индексы, чтобы проверять соседние элементы.
Если хотите оптимизировать: изучите двоичный поиск для таких задач.
Кто сможет найти все пики? Пишите свои ответы! 🏔️
👍1🔥1
Секретный импорт
Что напечатает код?
❓ Вопрос: Что произойдет при выполнении этого кода? Какую информацию он содержит?
Что напечатает код?
import this
❓ Вопрос: Что произойдет при выполнении этого кода? Какую информацию он содержит?
Шаблоны строк с string.Template 🖋️
Модуль string.Template позволяет создавать строки с шаблонами для упрощения подстановок.
🔍 Применение:
Генерация писем.
Форматирование отчетов.
Упрощение работы с текстом.
🔑 Результат выполнения:
Модуль string.Template позволяет создавать строки с шаблонами для упрощения подстановок.
🔍 Применение:
Генерация писем.
Форматирование отчетов.
Упрощение работы с текстом.
from string import Template
template = Template("Hello, $name! Welcome to $place.")
message = template.substitute(name="Alice", place="Python World")
print(message)
🔑 Результат выполнения:
Hello, Alice! Welcome to Python World.
👍5
Работа с изображениями через Pillow 🖌️
Библиотека Pillow предоставляет мощные инструменты для обработки изображений.
🔍 Применение:
Редактирование изображений.
Создание миниатюр.
Добавление фильтров.
🔑 Результат выполнения:
Создается миниатюра изображения с размерами 100x100 пикселей.
Библиотека Pillow предоставляет мощные инструменты для обработки изображений.
🔍 Применение:
Редактирование изображений.
Создание миниатюр.
Добавление фильтров.
from PIL import Image
# Открываем изображение и создаем миниатюру
image = Image.open("example.jpg")
image.thumbnail((100, 100))
image.save("thumbnail.jpg")
print("Thumbnail создан.")
🔑 Результат выполнения:
Создается миниатюра изображения с размерами 100x100 пикселей.
👍2
Создание конфигураций через configparser ⚙️
Модуль configparser используется для работы с конфигурационными файлами.
🔍 Применение:
Хранение настроек.
Упрощение настройки приложений.
Чтение конфигураций.
🔑 Результат выполнения:
При наличии файла config.ini с содержимым:
Вывод:
Модуль configparser используется для работы с конфигурационными файлами.
🔍 Применение:
Хранение настроек.
Упрощение настройки приложений.
Чтение конфигураций.
import configparser
config = configparser.ConfigParser()
config.read("config.ini")
print("Database:", config["database"]["name"])
🔑 Результат выполнения:
При наличии файла config.ini с содержимым:
[database]
name = test_db
Вывод:
Database: test_db
❤2👍1
Многопроцессорная обработка с multiprocessing ⚙️
Модуль multiprocessing позволяет запускать код параллельно, используя несколько процессов.
🔍 Применение:
Распараллеливание задач.
Ускорение вычислений.
Обработка больших данных.
🔑 Результат выполнения:
Модуль multiprocessing позволяет запускать код параллельно, используя несколько процессов.
🔍 Применение:
Распараллеливание задач.
Ускорение вычислений.
Обработка больших данных.
import multiprocessing
import time
def worker(name):
print(f"Worker {name} starting")
time.sleep(2)
print(f"Worker {name} finished")
if __name__ == "__main__":
process1 = multiprocessing.Process(target=worker, args=("A",))
process2 = multiprocessing.Process(target=worker, args=("B",))
process1.start()
process2.start()
process1.join()
process2.join()
🔑 Результат выполнения:
Worker A starting
Worker B starting
Worker A finished
Worker B finished
❤4
Сохранение данных с pickle 📦
Модуль pickle используется для сериализации и десериализации объектов Python.
🔍 Применение:
Сохранение состояния программ.
Передача данных между процессами.
Хранение пользовательских объектов.
🔑 Результат выполнения:
Модуль pickle используется для сериализации и десериализации объектов Python.
🔍 Применение:
Сохранение состояния программ.
Передача данных между процессами.
Хранение пользовательских объектов.
import pickle
data = {"name": "Alice", "age": 30}
# Сохранение
with open("data.pkl", "wb") as file:
pickle.dump(data, file)
# Загрузка
with open("data.pkl", "rb") as file:
loaded_data = pickle.load(file)
print(loaded_data)
🔑 Результат выполнения:
{'name': 'Alice', 'age': 30}
🔥4
Работа с потоками данных через queue 🌀
Модуль queue помогает организовать безопасную передачу данных между потоками.
🔍 Применение:
Организация очередей задач.
Асинхронная обработка.
Управление ресурсами.
🔑 Результат выполнения:
Модуль queue помогает организовать безопасную передачу данных между потоками.
🔍 Применение:
Организация очередей задач.
Асинхронная обработка.
Управление ресурсами.
import queue
q = queue.Queue()
# Добавление элементов
q.put(1)
q.put(2)
q.put(3)
# Получение элементов
while not q.empty():
print(q.get())
🔑 Результат выполнения:
1
2
3
🔥1
Создание диаграмм с seaborn 📊
seaborn — это библиотека для создания статистических графиков.
🔍 Применение:
Анализ данных.
Отображение корреляций.
Статистическая визуализация.
🔑 Результат выполнения:
Создается боксплот с визуализацией данных.
seaborn — это библиотека для создания статистических графиков.
🔍 Применение:
Анализ данных.
Отображение корреляций.
Статистическая визуализация.
import seaborn as sns
import matplotlib.pyplot as plt
data = [10, 20, 30, 40, 50]
sns.boxplot(data=data)
plt.title("Boxplot Example")
plt.show()
🔑 Результат выполнения:
Создается боксплот с визуализацией данных.
🔥2
Ленивая загрузка с itertools ⏳
Модуль itertools предоставляет ленивые итераторы для работы с последовательностями.
🔍 Применение:
Оптимизация больших данных.
Генерация комбинаций.
Создание бесконечных последовательностей.
🔑 Результат выполнения:
Модуль itertools предоставляет ленивые итераторы для работы с последовательностями.
🔍 Применение:
Оптимизация больших данных.
Генерация комбинаций.
Создание бесконечных последовательностей.
import itertools
# Бесконечный цикл
counter = itertools.count(start=1, step=2)
for _ in range(5):
print(next(counter))
🔑 Результат выполнения:
1
3
5
7
9
👍2
Контроль ресурсов через contextlib 🚪
Модуль contextlib упрощает управление ресурсами с помощью контекстных менеджеров.
🔍 Применение:
Управление файлами.
Работа с сетевыми соединениями.
Сложные контексты.
🔑 Результат выполнения:
Модуль contextlib упрощает управление ресурсами с помощью контекстных менеджеров.
🔍 Применение:
Управление файлами.
Работа с сетевыми соединениями.
Сложные контексты.
from contextlib import contextmanager
@contextmanager
def custom_context():
print("Entering context")
yield
print("Exiting context")
with custom_context():
print("Inside context")
🔑 Результат выполнения:
Entering context
Inside context
Exiting context
🔥1
Шифрование с использованием cryptography 🔐
Библиотека cryptography позволяет шифровать и дешифровать данные.
🔍 Применение:
Защита данных.
Реализация безопасных сообщений.
Хранение конфиденциальной информации.
🔑 Результат выполнения:
Библиотека cryptography позволяет шифровать и дешифровать данные.
🔍 Применение:
Защита данных.
Реализация безопасных сообщений.
Хранение конфиденциальной информации.
from cryptography.fernet import Fernet
# Генерация ключа и шифрование данных
key = Fernet.generate_key()
cipher = Fernet(key)
message = b"Secret Message"
encrypted_message = cipher.encrypt(message)
print("Encrypted:", encrypted_message)
# Дешифрование
decrypted_message = cipher.decrypt(encrypted_message)
print("Decrypted:", decrypted_message.decode())
🔑 Результат выполнения:
Encrypted: b'...'
Decrypted: Secret Message
🔥2❤1👍1
🚀 Контекстные менеджеры
Суть темы:
Контекстные менеджеры позволяют управлять ресурсами, такими как файлы или сетевые соединения, с помощью ключевого слова with. Это гарантирует, что ресурсы будут правильно освобождены после использования.
Применение:
Работа с файлами.
Управление сетевыми соединениями.
Обеспечение корректного завершения транзакций.
Пример кода:
Суть темы:
Контекстные менеджеры позволяют управлять ресурсами, такими как файлы или сетевые соединения, с помощью ключевого слова with. Это гарантирует, что ресурсы будут правильно освобождены после использования.
Применение:
Работа с файлами.
Управление сетевыми соединениями.
Обеспечение корректного завершения транзакций.
Пример кода:
with open('file.txt', 'r') as file:
content = file.read()
print(content)
👍2❤1🔥1
Дескрипторы и свойства
Суть темы:
Дескрипторы и свойства позволяют контролировать доступ к атрибутам класса. Это полезно для создания более гибких и безопасных объектов.
Применение:
Валидация данных при установке значений атрибутов.
Ленивая загрузка данных.
Создание вычисляемых атрибутов.
Пример кода:
Суть темы:
Дескрипторы и свойства позволяют контролировать доступ к атрибутам класса. Это полезно для создания более гибких и безопасных объектов.
Применение:
Валидация данных при установке значений атрибутов.
Ленивая загрузка данных.
Создание вычисляемых атрибутов.
Пример кода:
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
@property
def fahrenheit(self):
return self.celsius * 9/5 + 32
@fahrenheit.setter
def fahrenheit(self, value):
self.celsius = (value - 32) * 5/9
temp = Temperature(0)
print(temp.fahrenheit) # Вывод: 32.0
temp.fahrenheit = 100
print(temp.celsius) # Вывод: 37.777...
🔥2❤1👍1
Работа с базами данных (ORM и SQLAlchemy)
Суть темы:
ORM (Object-Relational Mapping) позволяет работать с базами данных, используя объекты Python, вместо написания SQL-запросов вручную. SQLAlchemy — одна из самых популярных библиотек для работы с базами данных в Python.
Применение:
Упрощение работы с базами данных.
Создание сложных запросов с помощью Python-кода.
Поддержка различных СУБД (PostgreSQL, MySQL, SQLite и др.).
Пример кода:
Суть темы:
ORM (Object-Relational Mapping) позволяет работать с базами данных, используя объекты Python, вместо написания SQL-запросов вручную. SQLAlchemy — одна из самых популярных библиотек для работы с базами данных в Python.
Применение:
Упрощение работы с базами данных.
Создание сложных запросов с помощью Python-кода.
Поддержка различных СУБД (PostgreSQL, MySQL, SQLite и др.).
Пример кода:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name="Alice", age=25)
session.add(new_user)
session.commit()
👍2🔥2❤1