如何将函数作为参数传递给另一个函数,并在python中使用该函数返回的值?

如何将函数作为参数传递给另一个函数,并在python中使用该函数返回的值?,python,Python,我试图对一个函数返回的值求反 将代码视为 def greater(a,b): return a>b check = negate(greater) assert check(8,9) 或 我应该如何定义否定函数??在装饰器中使用not操作符: from functools import wraps def negate(func): @wraps(func) def wrapper(*args, **kw): return not func(

我试图对一个函数返回的值求反

将代码视为

def greater(a,b):
    return a>b

check = negate(greater)

assert check(8,9)


我应该如何定义否定函数??

在装饰器中使用
not
操作符:

from functools import wraps

def negate(func):
    @wraps(func)
    def wrapper(*args, **kw):
        return not func(*args, **kw)
    return wrapper
上面的decorator返回一个包装函数,该函数对包装函数的返回值应用
not
。上例中的是可选的,但确保包装器从原始函数获得docstring和其他可自省属性,使其行为更像包装函数

演示:


在装饰器中使用
not
操作符:

from functools import wraps

def negate(func):
    @wraps(func)
    def wrapper(*args, **kw):
        return not func(*args, **kw)
    return wrapper
上面的decorator返回一个包装函数,该函数对包装函数的返回值应用
not
。上例中的是可选的,但确保包装器从原始函数获得docstring和其他可自省属性,使其行为更像包装函数

演示:

像这样:

def negate(func):
  def result(*args):
    return not func(*args)
  return result
这是一个函数,它创建一个函数,返回调用原始函数的结果,而不是调用它的返回值,然后返回该函数。

如下所示:

def negate(func):
  def result(*args):
    return not func(*args)
  return result
这是一个创建函数的函数,该函数返回调用原始函数的结果,而不是调用其返回值,然后返回该函数。

使用函数样式:

演示:

>>> greater(10, 20)
False
>>> negate(greater)(10, 20)
True
要保留像
docstring
和传递给
negate
的函数的其他属性,可以使用

使用函数样式:

演示:

>>> greater(10, 20)
False
>>> negate(greater)(10, 20)
True
要保留像
docstring
和传递给
negate
的函数的其他属性,可以使用


我确实试过了,但它显示TypeError:“bool”对象不可调用重试,我错过了你问题的一个细微差别。在这个用例中使用wrapps可能不合适,复制docstring等等…我试过了,但它显示TypeError:“bool”对象不可调用重试,我遗漏了你问题中的一个细微差别。在这个用例中使用wrapps可能不合适,复制docstring和所有…你在复制Martijns的编辑吗?你们中的一个应该删除你们的答案。@wim他的原始答案是错误的,我没有复制任何人。你们在复制Martijns的编辑吗?你们中的一个应该删除你们的答案。@wim他原来的答案是不正确的,我没有抄袭任何人。那太完美了。谢谢:)@RiteshBhat:当然可以。很高兴能帮上忙,太好了。谢谢:)@RiteshBhat:当然可以。很高兴能帮上忙。
from functools import wraps

def negate(func):
    @wraps(func)
    def inner(*args, **kwargs):
        val = func(*args, **kwargs)
        return not val
    return inner