Python:传递"不是"作为lambda函数

时间:2018-02-04 18:11:44

标签: python lambda

我需要传递一个函数作为一个参数,作为布尔值"不是"。我试过这样的事情,但它没有用,因为not不是一个功能。

theFunction(callback=not) # Doesn't work :(

我需要执行以下操作,但是我想知道是否存在执行此简单作业的任何预定义函数,因此我不必像这样重新定义它:

theFunction(callback=lambda b: not b, anotherCallback=lambda b: not b)

注意: 我无法改变我必须传递这样一个函数的事实,因为它是一个API调用。

2 个答案:

答案 0 :(得分:26)

是的,有operator模块:https://docs.python.org/3.6/library/operator.html

import operator
theFunction(callback=operator.not_)

答案 1 :(得分:14)

not 不是函数,而是关键字。这意味着你无法传递参考。有充分的理由,因为它允许Python" 短路"某些表达方式。

但是,您可以使用not_包的operator(带下划线):

from operator import not_

theFunction(callback=not_, anotherCallback=not_)