Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの組み込みオブジェクト(builtins)とは?仕組みと使い方を解説

builtinsモジュールとは

Pythonにはという名前の特別なモジュールが用意されています。このモジュールは、Pythonインタープリタが起動するたびに、トップレベルの実行環境としてでも対話セッションとしてでも、必ず自動的にロードされます。

builtinsモジュールには、以下のようなPythonの中核的な要素がすべて定義されています。

  • objectクラス:すべてのPythonオブジェクトの基底クラス
  • 組み込みデータ型:数値(int、float)、文字列(str)、リスト(list)、辞書(dict)など
  • BaseExceptionクラス:すべての組み込み例外(ValueError、TypeErrorなど)の基底クラス
  • 組み込み関数:len()、print()、range()など

明示的なインポートは通常不要

builtinsモジュールは現在のセッションに自動的にインポートされるため、通常は明示的にインポートする必要はありません。コード内で使用されるすべての組み込み関数は、デフォルトでbuiltinsモジュールから参照されているものとみなされます。

たとえば、次のコードは:

>>> len('hello')
5

実質的には、以下のコードと同じ意味になります。

>>> import builtins
>>> builtins.len('hello')
5

明示的なインポートが必要になるケース

ただし、組み込み関数と同じ名前のユーザー定義関数が存在する場合には注意が必要です。Pythonインタープリタはユーザー定義関数を優先して呼び出すため、両方が存在するときは、組み込み関数の方をモジュールで修飾して呼び出す必要があります。

以下の例では、組み込みのlen()関数と同じ名前の関数を独自に定義しています。

def len(string):
    print('ローカルの len() 関数が呼ばれました')
    print('builtins モジュールの len() 関数を呼び出します')
    import builtins
    l = builtins.len(string)
    print('length:', l)

string = "Hello World"
len(string)

実行結果:

ローカルの len() 関数が呼ばれました
builtins モジュールの len() 関数を呼び出します
length: 11

このように、import builtinsを行った上でのように記述することで、名前の衝突を回避しながら本来の組み込み関数を利用できます。なお、組み込み関数と同じ名前の関数を定義するのは可読性や保守性の面で推奨されないため、実際の開発では避けるのが一般的です。

__builtins__属性について

ほとんどのモジュールでは、グローバル変数の一部として属性の値です。

>>> import math
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'math': <module 'math' (built-in)>}

globals()の出力結果を見ると、__builtins__キーにbuiltinsモジュールが格納されていることが確認できます。これは、どのモジュールからでも組み込み関数や組み込み例外にアクセスできる仕組みを支えている重要な要素です。

まとめ

  • builtinsモジュールはPython起動時に自動的にロードされる
  • objectクラス、組み込み型、組み込み例外、組み込み関数がすべて定義されている
  • 通常は明示的なインポート不要だが、同名のユーザー定義関数がある場合はで呼び出す
  • 各モジュールのglobals()には
  1. Pythonのファイルオブジェクトとは?open関数によるファイル操作の基本を徹底解説

    Pythonでは、ファイルを読み書きする際に特別なライブラリをインポートする必要はありません。ファイル操作は言語にネイティブに組み込まれているためです。 まず最初に行うのは、組み込み関数 open() を使ってファイルオブジェクトを取得することです。open() 関数はファイルを開き、ファイルオブジェクトを返します。このファイルオブジェクトには、開いたファイルから情報を取得したり、内容を操作したりするためのメソッドや属性が含まれています。 ファイルとは何か? ファイル操作を行う前に、「ファイルとは何か」を理解しておきましょう。ファイルとは、関連する情報を保存するためにディスク上に確保された「名

  2. Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説

    Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される