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

Python中能否通过编程方式获取函数的实际实现代码?

问题解答

结论

可以打印出函数的Python实现代码,你可以用Python标准库自带的inspect模块的getsource()方法实现该需求。

使用示例

针对普通def定义的函数

你可以直接把函数对象传入inspect.getsource(),即可返回完整的函数定义字符串:

import inspect

a = 2
b = 1
# 你定义的数学函数
def hyperbolic(x):
    return a*x + b

# 改造后的检查函数(避免和导入的inspect模块重名)
def inspect_func(func):
    print(f"函数名称:{func.__name__}")
    print("函数实现源码:")
    print(inspect.getsource(func))

# 调用测试
inspect_func(hyperbolic)

运行后输出结果如下:

函数名称:hyperbolic
函数实现源码:
def hyperbolic(x):
    return a*x + b

针对lambda匿名函数

如果是lambda函数,getsource()会返回lambda定义所在的完整行代码:

hyperbolic_lambda = lambda x: a*x + b
inspect_func(hyperbolic_lambda)

运行输出:

函数名称:<lambda>
函数实现源码:
hyperbolic_lambda = lambda x: a*x + b

如果你只需要提取核心的数学表达式,可以对拿到的源码字符串做裁剪处理,去掉def声明、缩进、return关键字或者lambda前缀即可。

注意事项

该方法存在以下局限性:

  • 仅支持获取Python层面实现的函数的源码,C语言实现的内置函数(比如len()、sum())无法用该方法获取源码
  • 动态生成的函数(比如通过exec语句、types.FunctionType在运行时构造的函数)没有对应源码文件记录,无法获取源码
  • 部分交互式运行环境(比如原生Python shell)中临时定义的函数,可能无法正常获取源码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:00