Python:将"not"作为lambda函数传递

ger*_*nfr 14 python lambda

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

theFunction(callback=not) # Doesn't work :(
Run Code Online (Sandbox Code Playgroud)

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

theFunction(callback=lambda b: not b, anotherCallback=lambda b: not b)
Run Code Online (Sandbox Code Playgroud)

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

qua*_*ana 26

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

import operator
theFunction(callback=operator.not_)
Run Code Online (Sandbox Code Playgroud)


Wil*_*sem 14

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

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

from operator import not_

theFunction(callback=not_, anotherCallback=not_)
Run Code Online (Sandbox Code Playgroud)