Python 3で関数名を文字列として取得する方法

PYTHON3 チュートリアル

Pythonで関数名を文字列として取得する方法

Pythonで関数名を文字列として取得することは、プログラムの可読性やデバッグを容易にするために役立ちます。以下に、関数名を取得するための主な方法をいくつか紹介します。

1. `__name__`属性を使用する方法

Pythonの関数オブジェクトは`__name__`という属性を持っており、これを使用して関数の名前を文字列として取得することができます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def my_function():
pass
function_name = my_function.__name__
print(function_name) # 出力: my_function
def my_function(): pass function_name = my_function.__name__ print(function_name) # 出力: my_function
def my_function():
    pass

function_name = my_function.__name__
print(function_name)  # 出力: my_function

2. `inspect`モジュールを使用する方法

標準ライブラリの`inspect`モジュールを使用することで、より詳細な関数情報を取得することができます。特に、`inspect.currentframe()`を使って現在の関数名を取得することが可能です。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import inspect
def get_current_function_name():
return inspect.currentframe().f_code.co_name
current_function_name = get_current_function_name()
print(current_function_name) # 出力: get_current_function_name
import inspect def get_current_function_name(): return inspect.currentframe().f_code.co_name current_function_name = get_current_function_name() print(current_function_name) # 出力: get_current_function_name
import inspect

def get_current_function_name():
    return inspect.currentframe().f_code.co_name

current_function_name = get_current_function_name()
print(current_function_name)  # 出力: get_current_function_name

3. デコレータを使用する方法

デコレータを使用して関数の呼び出し前に関数名をログ出力するなどの処理を挿入することができます。これはデバッグ時に非常に便利です。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def log_function_name(func):
def wrapper(*args, **kwargs):
print(f"Calling function: {func.__name__}")
return func(*args, **kwargs)
return wrapper
@log_function_name
def example_function():
return "Hello, World!"
result = example_function()
# 出力: Calling function: example_function
print(result) # 出力: Hello, World!
def log_function_name(func): def wrapper(*args, **kwargs): print(f"Calling function: {func.__name__}") return func(*args, **kwargs) return wrapper @log_function_name def example_function(): return "Hello, World!" result = example_function() # 出力: Calling function: example_function print(result) # 出力: Hello, World!
def log_function_name(func):
    def wrapper(*args, **kwargs):
        print(f"Calling function: {func.__name__}")
        return func(*args, **kwargs)
    return wrapper

@log_function_name
def example_function():
    return "Hello, World!"

result = example_function()
# 出力: Calling function: example_function
print(result)  # 出力: Hello, World!

これらの方法を使用することで、Pythonプログラミングにおいて関数名を動的に取得し、ログ出力やデバッグに活用することが可能です。適切な方法を選んで、効率的なプログラミングを行いましょう。

購読
通知


0 Comments
Inline Feedbacks
View all comments