Pythonの魔法を覗く!dir(__builtins__)で組み込み関数・定数を一挙確認 🔍
Pythonを使い始めると、print()やlen()、int()といった関数を意識せずに使っていることに気づくでしょう。これらは、Pythonが最初から提供している「組み込み関数」と呼ばれるものです。また、TrueやFalse、Noneといった特別な意味を持つ「組み込み定数」も日常的に利用します。
これらの便利な機能が一体どこから来ているのか、そして他にどんなものがあるのか疑問に思ったことはありませんか?Pythonには、これらの組み込みオブジェクトの全貌を明らかにする魔法のようなコマンド、dir(__builtins__)があります。この記事では、dir(__builtins__)を使ってPythonの「中身」を探索し、組み込み関数や定数の一覧を確認する方法を分かりやすく解説します。
__builtins__とは何か?
Pythonでは、プログラムの実行が開始されると、自動的に利用可能になるグローバルな名前空間があります。これが組み込み名前空間であり、その中身を保持しているのが**__builtins__**オブジェクトです。
__builtins__はPythonのすべてのモジュールがデフォルトでアクセスできる特別なモジュールのようなものです。私たちが普段、import文を使わずにprint()やsum()を呼び出せるのは、これらが__builtins__の中に定義されているためです。
なぜ__builtins__を知る必要があるのか?
-
言語の理解: Pythonの基本的な構成要素を理解するのに役立ちます。
-
デバッグ: 意図しない名前の衝突(シャドーイング)がないか確認する手がかりになります。
-
学習: どんな組み込み関数や定数があるのかを知ることで、Pythonの機能をより深く探求できます。
dir(__builtins__)で一覧を確認する
Pythonのdir()関数は、オブジェクトが持つ属性やメソッドの名前をリストで返します。このdir()に__builtins__を渡すことで、組み込み関数や定数のすべてを一覧表示できます。
基本的な使い方
# dir(__builtins__)を実行して組み込みオブジェクトの一覧を取得
builtin_names = dir(__builtins__)
print("--- 組み込み関数・定数の一覧(一部抜粋)---")
# リストが非常に長いため、最初と最後の数個を表示
print("先頭の10個:", builtin_names[:10])
print("末尾の10個:", builtin_names[-10:])
print(f"合計 {len(builtin_names)} 個の組み込みオブジェクトがあります。")
# 出力例 (環境やPythonのバージョンによって異なる場合があります):
# --- 組み込み関数・定数の一覧(一部抜粋)---
# 先頭の10個: ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError']
# 末尾の10個: ['zip', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__']
# 合計 158 個の組み込みオブジェクトがあります。
この出力には、print, len, intのようなおなじみの関数だけでなく、True, False, Noneなどの定数、TypeError, ValueErrorのような組み込み例外クラスも含まれています。
組み込み関数と組み込み定数を見る
dir(__builtins__)の出力は非常に長いリストですが、いくつかの代表的な組み込み関数と組み込み定数をピックアップして見てみましょう。
組み込み関数 (Built-in Functions)
私たちが日常的に使う多くの関数が含まれています。
-
print(): 画面に出力する。 -
len(): オブジェクトの長さを返す。 -
int(),str(),float(): 型変換を行う。 -
input(): ユーザーからの入力を受け取る。 -
sum(): シーケンス内の数値の合計を計算する。 -
max(),min(): シーケンス内の最大値・最小値を返す。 -
open(): ファイルを開く。 -
range(): 数値のシーケンスを生成する。 -
map(),filter(): イテラブルなオブジェクトに変換関数を適用する。 -
type(): オブジェクトの型を返す。
例: 組み込み関数の使用
message = "Hello Python!"
length = len(message) # len() は組み込み関数
print(f"'{message}' の長さは {length} です。")
numbers = [10, 20, 30, 40]
total = sum(numbers) # sum() は組み込み関数
print(f"合計: {total}")
組み込み定数 (Built-in Constants)
これらは特別な意味を持つ不変の値です。
-
True: 論理真値。 -
False: 論理偽値。 -
None: 何も値がないことを表す特殊なオブジェクト。 -
Ellipsis: 省略記号 (...)。主にNumPyなどで使われます。 -
NotImplemented: 演算が実装されていないことを示す特別な値。 -
__debug__: Pythonインタプリタがデバッグモードで実行されているかを示すブール値。
例: 組み込み定数の使用
is_active = True # True は組み込み定数
result = None # None は組み込み定数
if is_active:
print("アクティブです。")
if result is None:
print("結果はまだありません。")
組み込み例外 (Built-in Exceptions)
エラーが発生したときにPythonが送出する例外クラスも__builtins__に含まれています。
-
TypeError: 不適切な型の操作や関数呼び出しが行われたときに発生。 -
ValueError: 引数の型は正しいが、値が不適切な場合に発生。 -
NameError: 未定義のローカル変数やグローバル変数が参照されたときに発生。 -
FileNotFoundError: ファイルが見つからない場合に発生。
例: 組み込み例外の確認
try:
int("hello") # ValueErrorが発生するはず
except ValueError as e:
print(f"エラー発生: {e}")
try:
print(undefined_variable) # NameErrorが発生するはず
except NameError as e:
print(f"エラー発生: {e}")
# 出力例:
# エラー発生: invalid literal for int() with base 10: 'hello'
# エラー発生: name 'undefined_variable' is not defined
まとめと活用法
dir(__builtins__)は、Pythonが提供する基本的な機能のすべてを一望できる強力なツールです。
-
Pythonの学習: どんな組み込み関数や例外があるのかを知ることで、新しいPythonの機能を発見できます。
-
コードの可読性向上: 組み込み関数を知ることで、自分で車輪の再発明をする必要がなくなり、より簡潔でPythonらしいコードを書けるようになります。
-
デバッグとエラー回避:
__builtins__に含まれる名前を誤って変数名や関数名として使ってしまうと、本来の組み込み機能が使えなくなる「シャドーイング」という現象が発生します。dir(__builtins__)を知っていれば、このような衝突を意識し、避けることができます。
Pythonの「中身」を理解することで、あなたはより深く、より効率的にPythonを使いこなせるようになるでしょう。ぜひ一度、あなたの環境でdir(__builtins__)を実行してみてください。新たな発見があるかもしれません。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


