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

__name__
属性を使用します
これは、最も直接的で最も一般的に使用される方法です。各関数オブジェクトには__name__
属性があり、関数が定義されたときに名前を返します。
def my_function(): 合格 print(my_function .__ name__)#出力:my_function
この方法は、ほとんどの場合、特にどの機能が正確にあるかを知っている場合に適しています。ただし、デコレータまたは動的に生成された関数を使用する場合、名前は変更または不正確である可能性があることに注意する必要があります。

decoratorでfunctools.wraps
を使用します
デコレーターを書くと、デコレーター関数のデコレーター__name__
を直接呼び出すと、装飾が関数のメタ情報を変更するため、誤った結果が得られる場合があります。
例えば:

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

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

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

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

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

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

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

@ContextManagerFromContextLibandDefineAgeneratoratoraturationは、sexactlyOnceを使用します

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

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