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