Перейти к содержимому

Что такое with *** as *** в Python-3

as — Это не команда как таковая, это ключевое слово, используемое как часть оператора with :

with open("myfile.txt") as f:
    text = f.read()

Объекту после as присваивается результат выражения, обрабатываемого контекстным менеджером with .

Другое использование — переименование импортированного модуля:

import numpy as np

таким образом, теперь вы можете использовать имя np вместо numpy .

Третье использование — предоставить вам доступ к объекту Exception :

try:
    f = open("foo")
except IOError as exc:
    # Now you can access the Exception for more detailed analysis

Зачем with

оператор with упрощает обработку исключений, инкапсулируя общие задачи подготовки и очистки в так называемых контекстных менеджерах . Более подробную информацию можно найти в PEP 343 . Например, оператор open сам по себе является менеджером контекста, который позволяет вам открывать файл, сохранять его открытым до тех пор, пока выполнение выполняется в контексте оператора with , где вы его использовали, и закрывать его, как только вы покидаете контекст, независимо от того, покинули ли вы его из-за исключения или во время обычного потока управления. Таким образом, оператор with может использоваться аналогично шаблону RAII в C++: некоторый ресурс приобретается оператором with и освобождается, когда вы покидаете контекст with .

>>> … <<<

С более чем одним элементом диспетчеры контекста обрабатываются так, как если бы несколько withоператоров были вложены:

with A() as a, B() as b:
suite

эквивалентно

with A() as a:
    with B() as b:
        suite

Добавить комментарий