en
Feedback
Инсайты & Укус Питона

Инсайты & Укус Питона

Open in Telegram

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

Show more
8 682
Subscribers
No data24 hours
-167 days
-5630 days
Posts Archive
Функциональное программирование (ФП). ➡️Что такое функциональное программирование? Функциональное программирование - это пара
Функциональное программирование (ФП). ➡️Что такое функциональное программирование? Функциональное программирование - это парадигма, в которой процесс вычисления рассматривается как вычисление математических функций. Основная идея заключается в том, чтобы избегать изменяемого состояния и мутаций данных. ➡️Почему ФП становится популярнее? 💬Упрощение параллельного программирования: Отсутствие побочных эффектов делает код более предсказуемым и легким для распараллеливания. 💬Меньше багов: Неизменяемость данных и чистые функции снижают вероятность ошибок, связанных с состоянием программы. 💬Более читаемый код: ФП поощряет написание небольших, специализированных функций, что улучшает читаемость и поддерживаемость кода. 💬Легкость тестирования: Чистые функции легче тестировать, так как их поведение зависит только от входных данных. 💬Производительность: Некоторые функциональные концепции, такие как ленивые вычисления, могут повысить производительность программ.

❓ Как реализовать менеджер контекста в Python с помощью класса? В каких случаях его стоит использовать? Приведите пример его реализации и покажите, как он работает ❗️Менеджеры контекста позволяют правильно управлять ресурсами, например, открытием и закрытием файлов, установлением и завершением соединений с базами данных или блокировкой и освобождением ресурсов в многопоточном программировании. Классический способ создания менеджера контекста — использование конструкции with. Менеджеры контекста помогают упрощать код и предотвращают утечки ресурсов, так как гарантируют выполнение завершающих действий даже при возникновении исключений. Для создания менеджера контекста с помощью класса необходимо определить два метода: enter() — код, выполняемый при входе в контекст (with). exit(self, exc_type, exc_val, exc_tb) — код, выполняемый при выходе из контекста, даже если внутри возникло исключение. 💡Пример: Допустим, у нас есть класс DatabaseConnection, который имитирует подключение к базе данных. Менеджер контекста будет обеспечивать автоматическое подключение и отключение от базы данных:
class DatabaseConnection:
    def init(self, db_name):
        self.db_name = db_name

    def enter(self):
        # Действия при входе в контекст
        print(f"Connecting to database '{self.db_name}'...")
        self.connection = f"Connection to {self.db_name}"
        return self.connection  # Возвращаем объект соединения

    def exit(self, exc_type, exc_val, exc_tb):
        # Действия при выходе из контекста (закрытие соединения)
        print(f"Closing connection to '{self.db_name}'...")
        self.connection = None
        return False  # Если возникло исключение, не подавлять его

# Использование менеджера контекста
with DatabaseConnection('test_db') as conn:
    print(f"Using {conn} to execute queries...")
Результат выполнения:
Connecting to database 'test_db'...
Using Connection to test_db to execute queries...
Closing connection to 'test_db'...
💡Объяснение 🌟Метод enter() открывает соединение и возвращает его. 🌟Метод exit() автоматически вызывается при выходе из блока with и закрывает соединение. 🌟Если в блоке with возникнет исключение, оно будет передано в exit(), но не будет подавлено (return False).