Python 如何放弃函数参数中的None值

Python 如何放弃函数参数中的None值,python,python-3.x,function,Python,Python 3.x,Function,我有一个函数df,它对输入*args执行一些操作: def df(*args): for arg in args: # do some computation 我有三个变量,它们将成为df的参数: 有没有办法在函数调用中“放弃”这个非类型值 我知道我可以在函数中添加一个条件,但在我的例子中,还有更多的函数也将接收此值,那么有没有办法在函数调用中“放弃”某种参数?一个从函数参数中不过滤任何参数的装饰器: def省略noef: def包装器*参数: args=[arg为ar

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

def df(*args):
    for arg in args:
        # do some computation
我有三个变量,它们将成为df的参数:

有没有办法在函数调用中“放弃”这个非类型值


我知道我可以在函数中添加一个条件,但在我的例子中,还有更多的函数也将接收此值,那么有没有办法在函数调用中“放弃”某种参数?

一个从函数参数中不过滤任何参数的装饰器:

def省略noef: def包装器*参数: args=[arg为args中的arg,如果arg不是None] 返回f*args 返回包装器 然后用它作为

@无遗漏 def df*参数: 对于args中的arg: 计算一下 这是假设您不打算对受影响的函数使用关键字参数

如果我有另一个函数baruser,*args,我只需要在args上使用decorator

嗯。以下是一个适应性更强的版本:

def省略索引中的“无”: def省略函数中的“无”: def包装器*参数: args=listargs[:index]+[arg代表args中的arg[index:]如果arg不是None] 返回函数*参数 返回包装器 返回ommit_none_from 您将其用作:

@从1中省略\u none\u def baruser,*参数: ...
这将从参数1开始过滤掉None,因此它将保留第一个参数user不变。

从函数参数中过滤掉None的装饰器:

def省略noef: def包装器*参数: args=[arg为args中的arg,如果arg不是None] 返回f*args 返回包装器 然后用它作为

@无遗漏 def df*参数: 对于args中的arg: 计算一下 这是假设您不打算对受影响的函数使用关键字参数

如果我有另一个函数baruser,*args,我只需要在args上使用decorator

嗯。以下是一个适应性更强的版本:

def省略索引中的“无”: def省略函数中的“无”: def包装器*参数: args=listargs[:index]+[arg代表args中的arg[index:]如果arg不是None] 返回函数*参数 返回包装器 返回ommit_none_from 您将其用作:

@从1中省略\u none\u def baruser,*参数: ...
这将从参数1开始过滤掉None,因此它将保留第一个参数user不变。

也许您可以制作一个装饰器来过滤掉None值。是否可以显示此函数与更多函数之间的关系?它们是在此函数内部调用还是在此函数外部调用将影响此问题的答案。也许您可以制作一个不过滤任何值的装饰器。是否可以显示此函数与更多函数之间的关系?它们是在函数内部调用还是在函数外部调用都会影响这个问题的答案。太棒了!如果我有另一个函数baruser,*args,我需要在args上使用decorator,我必须在里面选择args[1]省略一个,不是吗?如果不同函数的用例不同,那么一个简单的decorator就不会涵盖它。您可以编写另一个工作方式不同的decorator,或者编写一个带有额外参数的decorator来描述启动过滤器的参数。非常感谢!这也是a想要的。我还有一个问题,如果*arg都没有呢?它不会向函数传递任何信息,并且会引发一个TypeError,您将如何解决这个问题?如果所有参数都为None,它将调用您的函数,而不传递任何参数。你的功能是什么取决于你。太棒了!如果我有另一个函数baruser,*args,我需要在args上使用decorator,我必须在里面选择args[1]省略一个,不是吗?如果不同函数的用例不同,那么一个简单的decorator就不会涵盖它。您可以编写另一个工作方式不同的decorator,或者编写一个带有额外参数的decorator来描述启动过滤器的参数。非常感谢!这也是a想要的。我还有一个问题,如果*arg都没有呢?它不会向函数传递任何信息,并且会引发一个TypeError,您将如何解决这个问题?如果所有参数都为None,它将调用您的函数,而不传递任何参数。你的职能是什么,这取决于你。
a = 1234
b = 4321
c = None