ホームページ  >  記事  >  バックエンド開発  >  Python のカスタム関数をグローバルに利用できるようにするにはどうすればよいですか?

Python のカスタム関数をグローバルに利用できるようにするにはどうすればよいですか?

WBOY
WBOY転載
2023-05-08 09:43:071346ブラウズ

Python プロジェクトを開発するとき、いくつかのツール関数を作成することがよくあります。このツールの機能をプロジェクト内の複数の .py ファイルで使用するには、複数の場所にインポートする必要があり、非常に面倒です。

たとえば、次の例:

Python のカスタム関数をグローバルに利用できるようにするにはどうすればよいですか?

A.py ファイルと C.py ファイルの両方で clean_msg ツール関数を使用する必要があり、その後インポートする必要があります。 util.py の clean_msg 。これは自然なことのように思えます。

しかし、今日、icecream/builtins.py[1] のソースコードを見ていたら、Python の print 関数と同じようにツールの関数を使用できる高度な使い方を発見しました。の場合は、代わりに直接使用してください。

最初に効果を見てみましょう:

Python のカスタム関数をグローバルに利用できるようにするにはどうすればよいですか?

皆さん、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 サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。