在Python中通过另一个函数传递函数参数

2024-10-02 16:22:38 发布

您现在位置:Python中文网/ 问答频道 /正文

将字符串参数赋给要用作另一个函数的函数内参数的函数时:

def function(classifier, classifier_argument, list_of_parameters):
    classifier(classifier_argument=list_of_parameter[0])

classifier = someClassifier()
classifier_argument = 'someArgument'
list_of_parameters = [0,1,2,3,4,5]

func(classifier,classifier_argument,list_of_parameters)

它给了我这个错误:

TypeError:“classifier\u argument”是此函数的无效关键字参数

所以我知道我不能把它当作一个简单的字符串来传递,所以我的问题是:

我怎么才能通过呢?你知道吗


Tags: of函数字符串参数parameterdef错误function
3条回答

在我看来,您正在尝试实现分类器创建类,以使用以下不同的属性启动?可以在__init__方法上动态创建类属性,并使用**kwargs发送所需的数据。你知道吗

class someClassifier(object):

    def __init__(self, **kwargs):
        for k, v in kwargs.items():
            setattr(self, k, v)
            print('setting classifier attribute', k, v)


def function(classifier, **kwargs):
    classifier(**kwargs)


classifier = someClassifier

list_of_parameters = [0, 1, 2, 3, 4, 5]
classifier_argument = {
    'someArgument': list_of_parameters
}


function(classifier, **classifier_argument)
def function(classifier, classifier_argument, list_of_parameters):
    args = {classifier_argument:list_of_parameters}
    classifier(**args)

classifier = someClassifier # Note - you need to reference the function itself, not call it!
classifier_argument = 'someArgument'
list_of_parameters = [0,1,2,3,4,5]

function(classifier,classifier_argument,list_of_parameters)

这里有两点:您必须解压参数列表,并且需要传入classsifier函数而不调用它。你知道吗

调用函数时可以使用**

def function(classifier, classifier_argument, list_of_parameters):
    paras = {classifier_argument: list_of_parameter[0]}
    classifier(**paras)

classifier = someClassifier()
classifier_argument = 'someArgument'
list_of_parameters = [0,1,2,3,4,5]

func(classifier,classifier_argument,list_of_parameters)

一个更简单可行的快速测试示例:

def fun1(b):
    print(b)

def fun(a):
    paras = {a: 2}
    fun1(**paras)

fun('b')

相关问题 更多 >