ru
Kitaplar
Бейдер Д.

Чистый Python. Тонкости программирования для профи

  • Агеев Максимalıntı yaptı2 yıl önce
    если к применению инструкции with подойти творчески, то для своих модулей и классов вы сможете определять удобные API.
  • Агеев Максимalıntı yaptı2 yıl önce
    Реализации на основе класса и на основе генератора по своей сути эквивалентны. Вы можете предпочесть тот или иной вариант в зависимости от того, какой подход вы считаете более удобочитаемым.
  • Агеев Максимalıntı yaptı2 yıl önce
    будет высвобожден и возвращен системе.
  • Агеев Максимalıntı yaptı2 yıl önce
    В данном случае managed_file() является генератором, который сначала получает ресурс. После этого он временно приостанавливает собственное исполнение и передает ресурс инструкцией yield, чтобы его использовал источник вызова. Когда источник вызова покидает контекст with, генератор продолжает выполняться до тех пор, пока не произойдут любые оставшиеся шаги очистки, после чего ресурс
  • Агеев Максимalıntı yaptı2 yıl önce
    Ключевые выводы
    • Инструкция with упрощает обработку исключений путем инкапсуляции стандартных случаев применения инструкций try/finally в так называемые менеджеры контекста.

    • Чаще всего менеджер контекста используется для управления безопасным получением и высвобождением системных ресурсов. Ресурсы выделяются при помощи инструкции with и высвобождаются автоматически, когда поток исполнения покидает контекст with.

    • Эффективное применение инструкции with помогает избежать утечки ресурсов и облегчает ее восприятие.
  • Агеев Максимalıntı yaptı2 yıl önce
    Это превосходное функциональное средство языка, позволяющее решать задачи по управлению ресурсами в гораздо более питоновском и удобном в сопровождении стиле.
  • Агеев Максимalıntı yaptı2 yıl önce
    def __enter__(self):
  • Агеев Максимalıntı yaptı2 yıl önce
    def __exit__(self, exc_type, exc_val, exc_tb):

    self.level -= 1
  • Агеев Максимalıntı yaptı2 yıl önce
    попробуйте реализовать менеджер контекста, измеряющий время исполнения блока программного кода с использованием функции time.time. Обязательно напишите его в двух вариантах: на основе декоратора и на основе класса, чтобы усвоить разницу между ними.
  • Агеев Максимalıntı yaptı2 yıl önce
    Итак, каким образом вы реализовали бы менеджер контекста, который поддерживал бы эту функциональность?
fb2epub
Dosyalarınızı sürükleyin ve bırakın (bir kerede en fazla 5 tane)