如何区分lambda和def函数?

有没有办法对 lambdas 和 def 函数进行类型比较?我希望False通过某些过程输出,但我不知道这种粒度级别是否是 Python 函数的本机。我的用例是确保注册到事件的函数不是 lambda,以便以后可以通过另一种方法取消注册。

def foo():
    pass

(lambda: None).__class__ == foo.__class__ # >> True

编辑:我的用例实际上比功能更具教育意义,所以我真的只关心区分 lambda 函数和 def 函数的方法。

回答

您可以检查函数的名称。一个 lambda 将被命名为<lambda>

def islambda(f):
    return f.__name__ == '<lambda>'

def foo():
    pass

print(islambda(lambda: None)) # True
print(islambda(foo)) # false


以上是如何区分lambda和def函数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>