29 sierpnia 2014

python "with"

Chociaż w samym języku "with" jest już od dawna, dopiero teraz się z nim mierze. with umożliwia bezpieczne zarządzanie obiektem (po opuszczeniu bloku, zwalnia zasoby, które przy wejściu były zarezerwowane). W klasycznym przykładzie z open(), with otwiera plik i zwraca uchwyt do niego (przez as), który zostanie zwolniony po opuszczeniu bloku (automatycznie zostanie zawołane f.close()).
with open("aaa.txt") as f:
    data = f.read()
Mechanizm ten można stosować, gdy obiekt, który przekażemy do with posiada metody __enter__() (która będzie wołana na wejściu do bloku, oraz metodę __exit__() (która zostanie zwołana przy wyjściu z bolku). Jeżeli podczas wykonywania zostanie rzucony jakiś wyjątek, w pierwszej kolejności zostanie zwolniony zasób, a następnie wyjątek zostanie wyrzucony wyżej. Tutaj dwa linki, które dokładniej wyjaśniają wszystkie zawiłości.

Brak komentarzy:

Prześlij komentarz