この記事では、Pythonで「as」を使う場面と使い方について解説します。
Pythonでas
を使う場面は現状以下の4パターンしか存在しない。
as
は構文ではなく上記4パターンでのみ使えるオプションのようなものなのでas
の意味を深く考えるのはやめておきましょう。
それでは、パターンごとに使い方を見ていきます❗️
import
文を使ってモジュールをインポートする際にas
を使うことでインポートするモジュールにエイリアス(別名)を付けることができます。
# datetime.datetimeをdtで呼び出せるようにしている
from datetime import datetime as dt
print(dt.now())
実行結果
2021-08-04 17:06:49.633795
同時に複数のエイリアスを付けることが可能です。
from json import dumps as ds, loads as ls
vals = [1, 2, 3]
encode = ds(vals)
print(type(encode), encode)
decode = ls(encode)
print(type(decode), decode)
実行結果
<class 'str'> [1, 2, 3]
<class 'list'> [1, 2, 3]
try
文のexcept
節でエラーの型を指定した際にas
を繋げて名前を付けることで指定した例外が発生した時に生成されたエラーのインスタンスをその名前で参照することができます。
try:
raise ValueError('ValueErrorを発生させたよ!')
except ValueError as e: # eにValueErrorのインスタンスが渡される
print(f'type: {type(e)}')
print(f'エラーメッセージ: {e}')
実行結果
type: <class 'ValueError'>
エラーメッセージ: ValueErrorを発生させたよ!
with
文を使ってコンテキストマネージャを処理する際に__enter__()
で返されたオブジェクトがas
で繋いだ名前に渡されます。
class ContextManager:
def __enter__(self):
print('前処理')
return '__enter__の戻り値です' # asで繋いだ変数に渡されるオブジェクト
def __exit__(self, exc_type, exc_value, traceback):
print('後処理')
with ContextManager() as text:
print(text)
実行結果
前処理
__enter__の戻り値です
後処理
Python 3.10で追加された構造パターンマッチングでもas
を使用することができます。
定義したパターンのサブジェクト値をcase
本体の処理で使用したい場合、as
に続く任意の変数名にサブジェクト値をバインドさせることができます。
num = 1
match num:
case 1 as n: # 1をasで繋いだnにバインド
print(n)
実行結果
1
この記事では、Pythonのas
の使う場面と使い方を解説しました。
as
は、「モジュールインポート時」「例外処理」「with文」「パターンマッチング」でしか使わないのでこれらの使い方さえ覚えておけば問題ありません。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ
View Comments