You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印Python中partial偏函数对应的原函数名称?

获取partial偏函数的原函数名称用于重试日志输出

当你用functools.partial包装函数后,直接打印partial对象只会显示内存地址,要获取原函数名称,有两种简单可行的方法:

方法1:直接访问partial的__func__属性

partial对象内置了__func__属性,它指向被包装的原始函数,再通过__name__就能拿到函数名:

from functools import partial

def function_a():
    raise Exception("模拟执行失败")

def function_b():
    raise Exception("模拟执行失败")

# 待重试的partial函数列表
retry_tasks = [partial(function_a), partial(function_b, some_arg="test")]

for task in retry_tasks:
    # 提取原函数名称
    original_func_name = task.__func__.__name__
    print(f"Now running function: {original_func_name}")
    try:
        task()
    except Exception as e:
        print(f"函数 {original_func_name} 执行失败,将加入重试队列")

不管partial有没有绑定额外参数,__func__都会准确指向原函数,完全满足你的重试日志需求。

方法2:用inspect模块(更通用的场景)

如果你的函数存在多层装饰器或复杂包装的情况,用inspect.getoriginalfunction()方法能更稳妥地获取最原始的函数:

import inspect
from functools import partial

def function_a():
    pass

# 包装成partial
partial_task = partial(function_a)
# 获取原始函数
original_func = inspect.getoriginalfunction(partial_task)
print(f"Now running function: {original_func.__name__}")

这个方法不仅适用于partial,对其他包装类的函数对象也能生效,扩展性更强。

内容的提问来源于stack exchange,提问作者Jelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:10:02