我试图否定一个函数返回的值。
考虑代码是
def greater(a,b):
return a>b
check = negate(greater)
assert check(8,9)
或
def equal(a,b):
return a==b
check = negate(equal)
assert check("python","java")
我应该如何定义NEGATE函数???
请您参考如下方法:
使用函数式 decorator :
def negate(func):
def inner(*args, **kwargs):
val = func(*args, **kwargs)
return not val
return inner
演示:
>>> greater(10, 20)
False
>>> negate(greater)(10, 20)
True
要保留诸如 docstring 和传递给 negate 的函数的其他属性,您可以使用 functools.wraps .
from functools import wraps
def negate(func):
@wraps(func)
def inner(*args, **kwargs):
val = func(*args, **kwargs)
return not val
return inner
