如何将函数作为参数传递给另一个函数,并在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