ast
エーエスティー(標準ライブラリ)
意味 Pythonコードの構造解析
astとは?
astモジュールは、Pythonコードを抽象構文木(AST)と呼ばれる構造に変換します。 ASTはコードの構造を表現したもので、コードの意味を解析したり、変更したりするのに役立ちます。
astの具体的な使い方
シンプルな式のAST表示
import ast
code = "x = 1 + 2 * 3"
tree = ast.parse(code)
print(ast.dump(tree, indent=2))
👇出力結果
Module(
body=[
Assign(
targets=[
Name(id='x', ctx=Store())
],
value=BinOp(
left=Constant(value=1),
op=Add(),
right=BinOp(
left=Constant(value=2),
op=Mult(),
right=Constant(value=3)
)
)
)
],
type_ignores=[]
)
簡単な数式をASTに変換し、その構造を表示します。このコードでは、変数への代入と算術演算を含む式のASTを確認できます。
関数定義のAST表示と実行
import ast
code = """
def greet(name):
return f"こんにちは、{name}さん!"
print(greet("太郎"))
"""
tree = ast.parse(code)
print("ASTの構造:")
print(ast.dump(tree, indent=2))
print("\n実行結果:")
exec(compile(tree, filename="<ast>", mode="exec"))
👇出力結果
ASTの構造:
Module(
body=[
FunctionDef(
name='greet',
args=arguments(
posonlyargs=[],
args=[arg(arg='name')],
kwonlyargs=[],
kw_defaults=[],
defaults=[]
),
body=[
Return(
value=JoinedStr(
values=[
Constant(value='こんにちは、'),
FormattedValue(
value=Name(id='name', ctx=Load()),
conversion=-1
),
Constant(value='さん!')
]
)
)
],
decorator_list=[]
),
Expr(
value=Call(
func=Name(id='print', ctx=Load()),
args=[
Call(
func=Name(id='greet', ctx=Load()),
args=[Constant(value='太郎')],
keywords=[]
)
],
keywords=[]
)
)
],
type_ignores=[]
)
実行結果:
こんにちは、太郎さん!
関数定義と関数呼び出しを含むコードのASTを表示し、その後で実際にコードを実行します。ASTの構造と実行結果の両方を確認できます。
astに関するよくある質問
astが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonのastやre.sub、csv、random、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
Pythonを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!