Вопросы по теме 'contextmanager'
Как использовать менеджер контекста, чтобы избежать использования __del__ в python?
Общеизвестно, что метод Python __del__ не следует использовать для очистки важных вещей, так как не гарантируется, что этот метод будет вызван. Альтернативой является использование менеджера контекста, как описано в нескольких потоках.
Но я не...
6951 просмотров
schedule
25.10.2022
Правильный способ обработки исключений в классе менеджера контекста Python2.7
У меня есть несколько менеджеров контекста для проекта, над которым я работаю. Он вот-вот будет отправлен, и я столкнулся с чем-то, из-за чего начинаю паниковать.
У меня сложилось впечатление, что вы не должны повторно вызывать исключения,...
426 просмотров
schedule
08.11.2023
Перехват исключений в __enter__ в вызывающем коде на Python
Есть ли способ перехватывать исключения в методе __enter__ контекстного менеджера, не заключая весь блок with в try ?
class TstContx(object):
def __enter__(self):
raise Exception("I'd like to catch this exception")
def...
1833 просмотров
schedule
19.04.2023
python `с оператором .. as ..` и несколькими возвращаемыми значениями
Я пытаюсь использовать оператор python with (также известный как менеджер контекста), чтобы гарантировать, что сокет соединения TCP, созданный server_socket.accept() , всегда закрыт. Однако очевидная форма не работает, потому что accept()...
3967 просмотров
schedule
23.04.2023
Как манипулировать исключением в __exit__ контекстного менеджера?
Я знаю, что повторно вызывать исключение из метода __exit__() контекстного менеджера — плохой стиль. Итак, я хотел бы добавить атрибут к экземпляру, который может нести контекстную информацию, которая недоступна, если я позволю исключению...
2708 просмотров
schedule
20.08.2022
Контекстный менеджер Python не очищается
Когда я вызываю какие-либо исключения внутри менеджера контекста, код очистки не запускается. Например:
from contextlib import contextmanager
try:
raise BaseException()
except BaseException:
print "bye from except"
@contextmanager
def...
759 просмотров
schedule
26.12.2022
как питонический способ унаследовать контекстный менеджер
Python учит нас выполнять очистку объектов с помощью __enter__ и __exit__ . Что делать, если мне нужно создать объект, который использует объекты, которые должны использовать диспетчеры контекста? Представьте себе это:
from database1 import...
5093 просмотров
schedule
28.10.2022
Понимание цели возврата себя в классе менеджера контекста
Попытка понять, как диспетчеры контекста работают для перехвата ошибок, а точнее роль метода __enter__() в классе, созданном для использования в качестве диспетчера контекста, как он работает здесь в процессе «отлова ошибок» и почему self это...
646 просмотров
schedule
03.09.2022
Почему модуль не может быть диспетчером контекста (для оператора with)?
Предположим, у нас есть следующие mod.py :
def __enter__():
print("__enter__<")
def __exit__(*exc):
print("__exit__< {0}".format(exc))
class cls:
def __enter__(self):
print("cls.__enter__<")
def __exit__(self,...
944 просмотров
schedule
09.05.2023
Условные или необязательные менеджеры контекста в операторе with
Предположим, у меня есть какой-то контекстный менеджер (из сторонней библиотеки), который я использую так:
with freeze_time(test_dt):
lines_of_code_1
lines_of_code_2
lines_of_code_3
Но предположим, что если для test_dt нет...
1599 просмотров
schedule
13.10.2022
Список Python: использование [:]
Когда я читал главу 5 книги Python Essential Reference , я столкнулся с проблемой в примере ListTransaction . Вот исходный код:
class ListTransaction(object):
def __init__(self,thelist):
self.thelist=thelist
def...
31 просмотров
schedule
05.03.2023
Менеджеры контекста в Matlab: вызов __enter__ в Matlab
У меня есть пакет Python, и я хотел бы использовать его классы и методы в Matlab. Я знаю, что это можно сделать напрямую, начиная с Matlab 2014b. Я имею в виду, что все, что вам нужно сделать, это добавить py. в начале ваших утверждений. Пока все...
255 просмотров
schedule
26.09.2022
Как доработаны контекстные менеджеры в непотребленных генераторах?
Я не понимаю, как и когда контекстный менеджер в недоделанном генераторе закрывается. Рассмотрим следующий менеджер контекста и функцию:
from contextlib import contextmanager
@contextmanager
def ctx():
print('enter ctx')
yield...
235 просмотров
schedule
23.12.2022
Pythonic способ управления генераторами
Предлагает ли Python немного синтаксического сахара, чтобы подсластить конструкцию генератора test , как показано ниже?
def acquire():
print('Acquiring resource')
yield 'A'
def do_stuff():
print('Doing stuff')
yield 'B'...
71 просмотров
schedule
19.06.2023
Можно ли использовать подпроцесс asyncio с contextmanager?
В python (3.7+) я пытаюсь запустить подпроцесс в качестве менеджера контекста, асинхронно передавая потенциально большие объемы stdout. Проблема в том, что я не могу заставить тело contextmanager работать асинхронно с обратным вызовом stdout. Я...
347 просмотров
schedule
04.12.2022
Может ли функция вести себя как функция *и* контекстный менеджер?
Я понимаю, как можно расширить объект, чтобы его также можно было использовать в качестве менеджера контекста. Я также понимаю, как можно легко создать диспетчер контекста из функции (генератора), используя contextlib .
Однако можно ли написать...
28 просмотров
schedule
09.03.2023
Как я могу поймать исключение внутри менеджера контекста?
У меня есть случай, когда мне нужно поймать какое-то исключение ( в коде, например, я хочу поймать ZeroDivisionError ) и обработать его внутри моего собственного контекстного менеджера. Мне нужно проверить количество этого исключения и сделать...
57 просмотров
schedule
15.07.2023
Имитация пользовательского контекстного менеджера внутри функции
У меня есть собственный менеджер контекста, определенный как:
# ~/db/query.py
@contextmanager
def get_db_connection(conn_string, **kwargs):
try:
conn = pyodbc.connect(conn_string, **kwargs)
yield conn
except Exception as...
31 просмотров
schedule
07.10.2022