如何丢弃函数参数中的 None 值

我有一个函数df()对输入 *args 执行一些操作:


def df(*args):

    for arg in args:

        # do some computation

我有这三个变量将作为 的参数df():


a = 1234

b = 4321

c = None

有什么方法可以在函数调用中“丢弃”这个非类型值吗?


我知道我可以在函数内添加一个条件,但就我而言,我还有更多函数也将接收这个值,那么有没有什么方法可以在函数调用中“丢弃”某种参数?


largeQ
浏览 125回答 1
1回答

蝴蝶刀刀

从函数参数中过滤掉 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_nonedef 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不变。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python