为函数提供字符串参数时,我想将其用作另一个函数的参数:
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_argument”是该函数的无效关键字参数
所以我知道我不能将它作为简单的字符串传递,所以我的问题是:
我该如何通过?
答案 0 :(得分:0)
您可以在调用函数时使用**
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')
答案 1 :(得分:0)
以我的猜测,您正在尝试实现使用不同属性启动的分类器创建类,如下所示?您可以在__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)
答案 2 :(得分:0)
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函数而不调用它。