目次
__name__属性を使用します
decoratorでfunctools.wrapsを使用します
現在実行されている関数の名前を取得します(たとえば、関数内)
ホームページ バックエンド開発 Python チュートリアル Pythonで関数の名前を取得する方法

Pythonで関数の名前を取得する方法

Jul 15, 2025 am 01:43 AM
python 関数

Pythonで関数名を取得するには3つの方法があります。1。__name__属性を使用して、my_function .__ name__などの既知の関数の名前を直接取得します。 2。decortors.wrapsを使用して、元の関数名を保持して、ラッパー関数名に上書きされないようにします。 3。検査モジュールを使用して、デバッグやロギングに適した現在の実行機能または発信者名を動的に取得します。

Pythonで関数の名前を取得する方法

Pythonで関数の名前を取得することは、デバッグ、ロギング、またはデコレータの作成時に使用されるなど、非常に一般的な要件です。実際、関数名を取得する方法は多くありませんが、シーンに使用することが非常に重要です。

Pythonで関数の名前を取得する方法

__name__属性を使用します

これは、最も直接的で最も一般的に使用される方法です。各関数オブジェクトには__name__属性があり、関数が定義されたときに名前を返します。

 def my_function():
    合格

print(my_function .__ name__)#出力:my_function

この方法は、ほとんどの場合、特にどの機能が正確にあるかを知っている場合に適しています。ただし、デコレータまたは動的に生成された関数を使用する場合、名前は変更または不正確である可能性があることに注意する必要があります。

Pythonで関数の名前を取得する方法

decoratorでfunctools.wrapsを使用します

デコレーターを書くと、デコレーター関数のデコレーター__name__を直接呼び出すと、装飾が関数のメタ情報を変更するため、誤った結果が得られる場合があります。

例えば:

Pythonで関数の名前を取得する方法
 def my_decorator(func):
    def wrapper(*args、** kwargs):
        return func(*args、** kwargs)
    ラッパーを返します

@my_decorator
def says_hello():
    合格

print(say_hello .__ name__)#出力:ラッパー、say_helloではありません

現時点では、 functools.wrapsを使用して、元の関数の情報を保持できます。

 from from from import laps

def my_decorator(func):
    @Wraps(FUNC)
    def wrapper(*args、** kwargs):
        return func(*args、** kwargs)
    ラッパーを返します

@my_decorator
def says_hello():
    合格

print(say_hello .__ name__)#出力:say_hello

これにより、元の関数名を正しく取得できます。


現在実行されている関数の名前を取得します(たとえば、関数内)

ログ出力など、機能内に名前を自動的に取得する場合があります。この場合、 inspectモジュールを使用できます。

インポートする

def who_am_i():
    print(inspect.currentframe()。f_code.co_name)

who_am_i()#出力:who_am_i

またはより一般的:

 def log_call():
    caller = Inspect.Stack()[1] .Function
    print(f "from {caller}")

def test_func():
    log_call()

test_func()#出力:test_funcから呼び出します

この方法は、デバッグツールまたは一般的なロギングロジックでの使用に適しています。


一般に、関数名を取得するにはいくつかの方法があり、選択するものは特定のシナリオに依存します。
それが一般的な目的である場合、 __name__を使用するだけで十分です。
デコレーターを書くときは、 wrapsを追加することを忘れないでください。
実行時に発信者を動的に識別したい場合は、 inspectを使用してください。
基本的にはすべて、複雑ではありませんが、詳細を無視するのは簡単です。

以上がPythonで関数の名前を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

pythonでrequastion.txtファイルからパッケージをインストールする方法 pythonでrequastion.txtファイルからパッケージをインストールする方法 Sep 18, 2025 am 04:24 AM

Pipinstall-rrequirements.txtを実行して、依存関係パッケージをインストールします。競合を回避し、ファイルパスが正しく、PIPが更新されていることを確認し、必要に応じて-no-depsや-userなどのオプションを使用して、必要に応じてインストール動作を調整することを確認して、最初に仮想環境を作成およびアクティブ化することをお勧めします。

PytestでPythonコードをテストする方法 PytestでPythonコードをテストする方法 Sep 20, 2025 am 12:35 AM

Pythonは、Pythonのシンプルで強力なテストツールです。インストール後、命名ルールに従ってテストファイルが自動的に発見されます。アサーションテストのためにtest_から始まる関数を書き込み、 @pytest.fixtureを使用して再利用可能なテストデータを作成し、pytest.raisesを使用して例外を確認し、指定されたテストと複数のコマンドラインオプションをサポートし、テスト効率を改善します。

Pythonのコマンドライン引数を処理する方法 Pythonのコマンドライン引数を処理する方法 Sep 21, 2025 am 03:49 AM

theargparsemoduleisttherecommendedwayto handlecommand-lineargumentsinpython、robustparsing、typevalidation、helpmessages、およびerrorhandling; ousesys.argvforsimplecasesrequiringminimalsetup。

bipとは何ですか?なぜ彼らはビットコインの未来にとってそれほど重要なのですか? bipとは何ですか?なぜ彼らはビットコインの未来にとってそれほど重要なのですか? Sep 24, 2025 pm 01:51 PM

目次ビットコイン改善提案(BIP)とは何ですか?なぜBIPがそんなに重要なのですか?歴史的なBIPプロセスは、ビットコイン改善提案(BIP)でどのように機能しますか? BIPタイプの信号とは何ですか?鉱夫はそれをどのように送りますか? TaprootとBIP結論のクイックトライアルの短所は、2011年以来、ビットコイン改善提案または「BIP」と呼ばれるシステムを通じて行われています。ビットコイン改善提案(BIP)は、ビットコインが一般的に開発する方法のガイドラインを提供します。BIPには3つのタイプがあります。そのうち2つはビットコインの技術的変化に関連しています各BIPは、TWIを含むどこにでも集まるビットコイン開発者の間で非公式の議論から始まります。

初心者から専門家まで:10必要のない無料のパブリックデータセットWebサイト 初心者から専門家まで:10必要のない無料のパブリックデータセットWebサイト Sep 15, 2025 pm 03:51 PM

データサイエンスの初心者にとって、「経験不足」から「業界の専門家」への飛躍の核心は継続的な実践です。実践の基礎は、豊かで多様なデータセットです。幸いなことに、インターネット上には無料のパブリックデータセットを提供する多数のWebサイトがあります。これは、スキルを向上させ、スキルを磨くための貴重なリソースです。

Pythonの@ContextManagerデコレーターを使用してコンテキストマネージャーを作成するにはどうすればよいですか? Pythonの@ContextManagerデコレーターを使用してコンテキストマネージャーを作成するにはどうすればよいですか? Sep 20, 2025 am 04:50 AM

@ContextManagerFromContextLibandDefineAgeneratoratoraturationは、sexactlyOnceを使用します

ビッグデータ分析に適したコンピューターを選択する方法は?高性能コンピューティング用の構成ガイド ビッグデータ分析に適したコンピューターを選択する方法は?高性能コンピューティング用の構成ガイド Sep 15, 2025 pm 01:54 PM

ビッグデータ分析では、マルチコアCPU、大容量メモリ、階層型ストレージに焦点を当てる必要があります。 AmdepycやRyzenthreadripperなどのマルチコアプロセッサが優先され、コアの数とシングルコアの性能を考慮しています。メモリは64GBで始まるように推奨され、データの整合性を確保するためにECCメモリが推奨されます。ストレージは、NVMESSD(システムとホットデータ)、SatAssD(共通データ)、およびHDD(コールドデータ)を使用して、全体的な処理効率を改善します。

Pythonで毎日のタスク用の自動化スクリプトの書き方 Pythonで毎日のタスク用の自動化スクリプトの書き方 Sep 21, 2025 am 04:45 AM

repetitivetaskswsortomating、sosorganizingfilessorsendingningtumails、focusingonthosethatoccurfrequellyandtakesifatipime.2.useapsupratepythonlibrarieslikes、shotil、glob、smtplib、requests、beautifulsoup、anseleniumforferation、email、w

See all articles