为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

largeQ 2024-01-16 15:14:07
我有一个函数df()对输入 *args 执行一些操作:def df(*args):    for arg in args:        # do some computation我有这三个变量将作为 的参数df():a = 1234b = 4321c = None有什么方法可以在函数调用中“丢弃”这个非类型值吗?我知道我可以在函数内添加一个条件,但就我而言,我还有更多函数也将接收这个值,那么有没有什么方法可以在函数调用中“丢弃”某种参数?
查看完整描述

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不变。


查看完整回答
反对 回复 2024-01-16
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信