1 回答

TA貢獻1801條經(jīng)驗 獲得超8個贊
從函數(shù)參數(shù)中過濾掉 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
假設(shè)您不打算將關(guān)鍵字參數(shù)與受影響的函數(shù)一起使用。
如果我有其他函數(shù) bar(user, *args) 并且我只需要在 args 上使用裝飾器
好的。這是一個更具適應(yīng)性的版本:
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):
...
這將從參數(shù) 1 開始過濾掉 None,因此它將保持第一個參數(shù)user不變。
添加回答
舉報