Voglio qualcosa di simile:Come si crea un gestore di contesto con un loop all'interno?
from contextlib import contextmanager
@contextmanager
def loop(seq):
for i in seq:
try:
do_setup(i)
yield # with body executes here
do_cleanup(i)
except CustomError as e:
print(e)
with loop([1,2,3]):
do_something_else()
do_whatever()
Ma contextmanager non funziona perché si aspetta che il generatore di cedere esattamente una volta.
Il motivo per cui voglio questo è perché fondamentalmente voglio creare il mio loop personalizzato. Ho un IPython modificato che viene utilizzato per controllare le apparecchiature di test. Ovviamente è un REPL Python completo, ma la maggior parte delle volte l'utente chiama semplicemente funzioni predefinite (simile al prompt di Bash) e l'utente non dovrebbe essere un programmatore o familiare con Python. Ci deve essere un modo per eseguire il loop su un codice arbitrario con setup/cleanup e gestione delle eccezioni per ogni iterazione, e dovrebbe essere abbastanza semplice da digitare come sopra con l'istruzione.
Sapevo che sarebbe stato qualcosa di semplice. Grazie! – jpkotta