Böyle bir şey istiyorum:İçeride bir döngü ile bir contextmanager nasıl yapabilirim?
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()
Ama jeneratör yalnızca bir kez verim beklediği için contextmanager çalışmaz.
Bunun nedenini yapmamın nedeni, temelde kendi özel döngüsünü yapmak istiyorum. Test ekipmanını kontrol etmek için kullanılan modifiye IPython'um var. Açıkçası tam bir Python REPL'dir, ancak çoğu zaman kullanıcı önceden tanımlanmış işlevleri çağırır (Bash komutuna benzer) ve kullanıcının bir programcı veya Python ile aşina olması beklenmez. Her bir yinelemede kurulum/temizleme ve istisna işleme ile bazı rasgele kodların üstesinden gelmenin bir yolu olmalı ve yukarıdaki ifadeyle yazılması basit olmalıdır.
Bunun gibi basit bir şey olacağını biliyordum. Teşekkürler! – jpkotta