Python Context Manager

Python Context Manager

Zarządzanie zasobami

Korzystanie z zasobów, takich jak manipulacje plikami lub dostęp do bazy danych, jest dość powszechne we wszystkich językach komputerowych. Istnieje jednak skończona liczba tych zasobów. Musimy upewnić się, że przywrócenie takich zasobów po użyciu byłoby kluczową przeszkodą. Gdy nie zostaną przekazane, nastąpi wyciek zasobów, a on zwalnia lub nawet uszkadza komputer. Zdolność użytkowników do budowy i rozkładania realokacji zasobów będzie bardzo cenna. Do osiągnięcia tego osiągnięcia tego osiągnięcia mogą być wykorzystane przez menedżerów kontekstu Python, którzy ułatwiają skuteczne obsługę zasobów.

Menedżer kontekstowy do zarządzania zasobami

Trudno będzie natychmiast zamknąć plik, gdy kawałek kodu rzuci błąd lub ma skomplikowany mechanizm, w tym wiele zwróconych ścieżek. Spróbuj z wyjątkiem ledej, jest zwykle wykorzystywane w niektórych językach programowania, aby to zapewnić. Rzeczywiście zasób plików jest zakończony po użyciu, chociaż wystąpił błąd. Menedżerowie kontekstu, moduł Pythona, umożliwiają po prostu zarządzanie zasobami. Termin „z” zostanie wykorzystany. To stworzy obiekt, który zarządza kontekstem, dopóki nie zostanie przeanalizowany. Klasy lub procesy z modyfikatorami byłyby wykorzystywane do tworzenia menedżerów kontekstowych. Omówmy więcej menedżera kontekstowego.

Przykład nr 1

Wykorzystując klasy do konstruowania menedżerów kontekstowych, upewnij się, że klasa zawiera funkcje takie jak enter () i exit (). Działania oczyszczające są wykonywane za pośrednictwem funkcji EXIT (), która nie zwróci tylko funkcji (), zapewnia zasoby wymagające rozwoju. Aby przeanalizować ramy generowania menedżerów kontekstowych za pomocą klas, najpierw opracujmy podstawową klasę o nazwie ContextManager, jak pokazano tutaj:

klasa ContextManager ():
def __init __ (self1):
print („funkcja init będzie nazywana”)
def __enter __ (self2):
print („Enter Funkcja zostanie wywołana”)
powrót self2
def __exit __ (self2, exc_type, exc_value, exc_traceback):
print („funkcja wyjścia będzie nazywana”)
z ContextManager () jako menedżer:
Drukuj („tutaj jest z instrukcją”)


Na początku kodu tworzymy klasę określoną jako ContextManager. W tej klasie definiujemy funkcję init (). Następnie wykorzystujemy metodę print () do wyświetlania instrukcji „Funkcja init zostanie wywołana”. W następnym wierszu zostanie zdefiniowana kolejna funkcja, enter (). Ta funkcja zawiera „self2” jako argument. Nazwimy metodę wydrukowania instrukcji „Wprowadź funkcję Wprowadź zostanie wywołane”. Następnie wywoływane jest oświadczenie powrotne.

Zdefiniujmy nową funkcję o nazwie Exit (). Ta funkcja ma cztery różne argumenty, które zawierają wartość self2, exc_type, exc_value i exc_traceback. W przypadku tej funkcji stosuje się również instrukcję print (), aby pokazać wiersz „Funkcja wyjścia zostanie wywołana”. Na koniec utworzymy menedżera obiektów klasy ContextManager. Zastosujemy instrukcję print (), która pokazuje wiadomość „tutaj jest z instrukcją”.


W tym przykładzie instancja kontekstowa jest generowana. Atrybut po terminu „menedżer” otrzymuje ten alokacja. Poniższe funkcje są przeprowadzane sekwencyjnie po wykonaniu wyżej wspomnianego kodu:

  • w tym()
  • Wchodzić()
  • Organ deklaracji, który zawiera kod w sekcji „z”.
  • Wyjście(). Argumenty tej funkcji są wykorzystywane do kontroli błędów.

Przykład nr 2

Wykorzystajmy poprzednie podejście do budowy klasy, która pomaga w zarządzaniu zasobami plików. Klasa FileManager ułatwia dostęp, pisanie lub czytanie z plików i zakończenie plików.

klasa FileManager ():
def __init __ (self1, nazwa pliku, tryb):
Self1.nazwa pliku = nazwa pliku
Self1.tryb = tryb
Self1.plik = brak
def __enter __ (self2):
Self2.plik = otwarty (self2.nazwa pliku, self2.tryb)
powrót self2.plik
def __exit __ (self2, exc_type, exc_value, exc_traceback):
Self2.plik.zamknąć()
z FileManager („Witam.txt ', „w”) jako f:
F.Write („Test”)

Drukuj (f.Zamknięte)


Po pierwsze, tworzymy klasę znaną jako „FileManager”. Teraz definiujemy różne funkcje związane z tą klasą. Najpierw definiujemy funkcję init (). W ramach tej funkcji przekazujemy trzy różne argumenty. Pierwszy parametr to „self1”, drugi parametr pokazuje nazwę pliku „nazwa pliku”, a ostatni parametr pokazuje „tryb” pliku. Tworzymy obiekt zwany nazwą pliku i ustawiamy jego wartość równą oryginalnej nazwie wymaganego pliku.

Następnie tworzymy inny obiekt o nazwie „Tryb”, a tutaj określamy format zdefiniowanego pliku. Oświadczamy ostatni obiekt nazwany „plik”, a teraz wartość tego obiektu zostanie ustawiona jako „Brak”. Zainicjujmy inną funkcję Enter (). Zapewniamy wartość „self2” jako argument dla tej funkcji. Tutaj wywołujemy metodę Open (), aby otworzyć określony plik. Ta funkcja zawiera dwa parametry, które zawierają nazwę pliku, którą chcemy otworzyć, oraz tryb otwierania pliku. Parametr trybu pokazuje, w którym celu chcemy otworzyć plik. Tryb pliku będzie „zapisz” lub „odczyt”.

Następnie korzystamy z instrukcji powrotu. W następnym kroku chcemy wyjść z tego pliku. Więc stosujemy metodę Exit (). Przekażemy cztery argumenty do tej funkcji. Następnie wykorzystujemy metodę FileManager (). Ładujemy plik za pomocą tej funkcji. W ramach tej funkcji określamy tekst, który chcemy napisać w pliku. A także określamy tryb pliku „W”. Teraz stosujemy metodę Write (). Aby zakończyć kod, stosujemy metodę print (). W ramach tej funkcji używamy bliskiej instrukcji, aby po prostu zamknąć plik.


Korzystając z Menedżera kontekstowego, będziemy zarządzać plikami. Po wdrożeniu bloku „z” odpowiednie kroki odbywają się jeden po drugim:

  • Ilekroć wywoływana jest funkcja init (), konstruowana jest instancja FileManager, przywitanie.txt jako tytuł pliku i „w” jako format FI • Hello.Plik txt jest dostępny w formacie zapisu przez funkcję Enter (), która zwraca również klasę pliku do atrybutu f.
  • Plik zawiera treść „Test."
  • Po zakończeniu sekcji, funkcja Exit () obsługuje zamykanie pliku. Ponieważ FileManager rzeczywiście skutecznie zarządzał zakończeniem pliku, który normalnie byłoby wymagane do jawnego obsługi, gdy drukuje (f.zamknięty) jest wykonywany, wynik będzie prawdziwy.

Wniosek

W tym artykule rozmawialiśmy o Python Context Manager. Możemy przypisać i wykorzystywać zasoby w określonych momentach, które wybieramy z powodu menedżerów kontekstowych. Wyrażenie „z” jest najczęściej używaną ilustracją menedżera kontekstowego. Ilekroć chcemy połączyć dwa powiązane zdarzenia i wdrożyć między nimi kawałek kodu, używamy menedżerów kontekstowych. Wykonujemy przykład, w którym demonstrujemy tworzenie menedżera kontekstowego. Manipulujemy plikami za pomocą menedżera kontekstowego i z poleceniami.