python - 如何区分 lambda 和 def 函数?

标签 python function

有没有办法对 lambda 和 def 函数进行类型比较?我希望 False 通过一些过程输出,但我不知道这种粒度级别是否是 python 函数的 native 。我的用例是确保注册到事件的函数不是 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

关于python - 如何区分 lambda 和 def 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68491866/

相关文章:

python - 使用Python正则表达式提取所有格词和括号中的词

python人类可读的大数字

python - 将列表的一部分与Python中的完整列表进行比较

C 不使用 fscanf 从 txt 读取整数

python - python 如何将 unicode 和非 unicode 元组视为平等的?

Python Subprocess stdout 和 communicate()[0] 不打印终端会打印的输出

mysql - 无法创建包含声明关键字的 MySQL 函数

string - Excel 函数格式

javascript函数无需参数即可工作,

以函数为参数的 R 函数,每个函数都有可变参数