Python プロジェクトを開発するとき、いくつかのツール関数を作成することがよくあります。このツールの機能をプロジェクト内の複数の .py ファイルで使用するには、複数の場所にインポートする必要があり、非常に面倒です。
たとえば、次の例:
A.py ファイルと C.py ファイルの両方で clean_msg ツール関数を使用する必要があり、その後インポートする必要があります。 util.py の clean_msg 。これは自然なことのように思えます。
しかし、今日、icecream/builtins.py[1] のソースコードを見ていたら、Python の print 関数と同じようにツールの関数を使用できる高度な使い方を発見しました。の場合は、代わりに直接使用してください。
最初に効果を見てみましょう:
皆さん、A.py と C.py に注目してください。私は clean_msg をインポートしませんでしたが、使用しました。これは直接機能します。そしてそれは完全に問題なく動作します。
重要な原則は、エントリ ファイル main.py にあり、私が枠で囲んだ 3 行です。
import builtins from util import clean_msg setattr(builtins, 'clean_msg', clean_msg)
Python では、すべての組み込み関数またはクラスは組み込みモジュール内にあります。インポートせずにコード内で直接使用できます。ここで、カスタム ツール関数を組み込みモジュールに登録するだけで、組み込み関数と同じ効果が得られます。
ツール関数を組み込み関数として登録したい場合は、それをエントリー ファイルにインポートし、setattr を使用して組み込みモジュールの属性として設定するだけです。第二引数はグローバルに呼び出す場合の名前、第三引数は登録する必要のあるツール関数です。既存の組み込み関数と重複しない限り、名前はユーティリティ関数の名前と異なっていてもかまいません。
登録が完了すると、このプロジェクトの実行中は、組み込み関数を呼び出すのと同じように、.py ファイル内の登録名を使用してこのツール関数を直接呼び出すことができます。
[1]icecream/builtins.py: https://github.com/gruns/icecream/blob/master/icecream/builtins.py
以上がPython のカスタム関数をグローバルに利用できるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。