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不變。
添加回答
舉報