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

如何获取Python中Lambda/函数的准确字符串表示?

获取Lambda函数的字符串表示

太懂这种无奈了!默认打印lambda函数只会出来一串内存地址,完全看不到实际写的逻辑,跟你说的JS里的function foo(){ <native code> }一样没用。不过Python里有办法拿到lambda的源代码表示,刚好能满足你的需求!

最直接的解决方案:用inspect模块

Python标准库的inspect模块专门用来获取对象的源代码信息,用它的getsource方法就能轻松拿到lambda的定义:

import inspect

quux = lambda x: 1 - abs(x)
print(inspect.getsource(quux))

运行这段代码后,就能输出lambda x: 1 - abs(x),完全是你想要的实际逻辑内容!

小注意点:交互式环境的坑

如果你是在Python交互式命令行(比如直接在终端敲python进入的环境)里定义的lambda,inspect.getsource可能会抛出OSError,因为交互式环境里的代码没有对应的本地源文件。这种情况下,要么把lambda写在.py脚本文件里运行,要么可以用下面的包装类方法。

自定义打印行为:包装Lambda

如果想让lambda每次被打印时都自动显示源代码,可以把它包装在一个自定义类里,重写__repr__方法:

import inspect

class ReprLambda:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        # 保持原lambda的调用能力
        return self.func(*args, **kwargs)
    def __repr__(self):
        # 返回lambda的源代码
        return inspect.getsource(self.func).strip()

# 用包装类创建lambda
quux = ReprLambda(lambda x: 1 - abs(x))
print(quux)  # 直接输出 lambda x: 1 - abs(x)
print(quux(-5))  # 正常调用,输出 -4

这样既保留了lambda的所有功能,又能在打印时直接看到逻辑。

备选方案:反编译字节码(应急用)

如果实在拿不到源代码,还可以用dis模块反编译lambda的字节码,虽然不如源代码直观,但也能间接看出逻辑:

import dis

quux = lambda x: 1 - abs(x)
dis.dis(quux)

输出的字节码会展示函数的执行步骤,能帮你还原逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:49:37