如何制作解析可变参数的函数?

亚历克斯·斯科特纳

我正在尝试制作一个方法列表和一个参数列表,并找到所有不会引发错误的可能匹配项,但我无法找到一种方法来制作一个可以自动输入任意数量参数的函数,具体取决于根据功能要求。

下面的代码是我得到的最接近的代码。我已经研究了 *args 和 **kwargs 之类的东西,但我需要它在函数调用而不是在函数中进行缩放。我使用该函数的包装器进行了一些工作,但找不到 100% 自动化的解决方案。

    for f in self.functions:  # loop all functions
        for c in self.conditions:  # loop all conditions

            try:  # tries combination
                f(c)

            except TypeError as e: 

                for c2 in self.conditions:  

                    try: 
                        f(c, c2)

                    except TypeError as a:  

@staticmethod def test_method1(x): print("test_method1 = "+str(x))

@staticmethod
def test_method2(x, y):
    print("test_method2 = " + str(x)+" : "+str(y))

我想要一种可以为 f() 提供任意数量参数的方法,以便相同的方法能够处理:

def test_method1(x):

def test_method2(x, y):

def test_method2(x, y, z):

等等。

我还需要能够将函数和给定参数保存在一个对象中,例如:

function = f
given_succesful_conditions = []
布伦南

正确的方法是使用*args. 从字面上看,它旨在处理您不知道传入了多少参数的情况。

当您不确定有多少参数可能会传递给您的函数时,您可以使用 *args,即它允许您将任意数量的参数传递给您的函数。来源

例子:

def test_method(*args):
    print(args)

test_method('x')
('x',)

test_method('x','y','z')
('x', 'y', 'z')

在文档中,它被称为4.7.3。任意参数列表

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章