1 回答
TA贡献1801条经验 获得超8个赞
从函数参数中过滤掉 None 的装饰器:
def omit_none(f):
def wrapper(*args):
args = [arg for arg in args if arg is not None]
return f(*args)
return wrapper
然后用它作为
@omit_none
def df(*args):
for arg in args:
# do some computation
假设您不打算将关键字参数与受影响的函数一起使用。
如果我有其他函数 bar(user, *args) 并且我只需要在 args 上使用装饰器
好的。这是一个更具适应性的版本:
def omit_none_from(index):
def omit_none_from(func):
def wrapper(*args):
args = list(args[:index]) + [arg for arg in args[index:] if arg is not None]
return func(*args)
return wrapper
return omit_none_from
您将其用作:
@omit_none_from(1)
def bar(user, *args):
...
这将从参数 1 开始过滤掉 None,因此它将保持第一个参数user不变。
添加回答
举报