Python 如何以元组形式将命名变量传递给函数

Python 如何以元组形式将命名变量传递给函数,python,syntax,Python,Syntax,我有一个带方法的类: class Learner: def fit(x,y,iterations=1,subsample_proportion=0.1): etc... def predict(X): etc.. 和一个函数: def error(learner,learner_args,X,Y): learner.fit(learner_args) Y_pred = learner.predict(X) etc

我有一个带方法的类:

class Learner:
    def fit(x,y,iterations=1,subsample_proportion=0.1):
         etc...
    def predict(X):
         etc..
和一个函数:

def error(learner,learner_args,X,Y):
     learner.fit(learner_args)
     Y_pred = learner.predict(X)
     etc...
如何使
learner\u args
元组在Python中传递到此函数中

现在我有:

learner = ada_boost.AdaBoost
learner_args = (train_x,train_y,4,0.2)
但它不起作用

还有,有没有一种方法可以将命名参数传递给函数调用

例如,在我的函数中,我会:

learner_args = (train_x,train_y,subsample_proportion=0.2)

忽略迭代。在Python中有没有实现这一点的方法?(语言内部…不是通过使用字典和到处测试值)

learner\u args
就可以了;你只需要正确地通过它

learner.fit(*learner_args)

学习者参数
可以;你只需要正确地通过它

learner.fit(*learner_args)

在字典前使用
**
。例如:

def f(a,b, c=0, d='a'):
    print a,b,c,d

kwargs = {'a' = 1, 'b' = 2}
f(**kwargs)
>>> 1 2 0 a
编辑:

根据您的评论,您可能需要以下内容:

args = ('first argument', 'second argument')
kwargs = {'c':'named argument c', 'd':'named argument d'}
f(*args, **kwargs)
>>> 'first argument', 'second argument', 'named argument c', 'named argument d'

在字典前使用
**
。例如:

def f(a,b, c=0, d='a'):
    print a,b,c,d

kwargs = {'a' = 1, 'b' = 2}
f(**kwargs)
>>> 1 2 0 a
编辑:

根据您的评论,您可能需要以下内容:

args = ('first argument', 'second argument')
kwargs = {'c':'named argument c', 'd':'named argument d'}
f(*args, **kwargs)
>>> 'first argument', 'second argument', 'named argument c', 'named argument d'

啊,太棒了。有没有办法传递命名参数?@bordeo:使用字典
**
<代码>**kwargs例如。啊,太棒了。有没有办法传递命名参数?@bordeo:使用字典
**
<代码>**kwargs例如,我想是的;我只需要做:
learner\u args=(args,kwargs)
当我通过它时,做
learner.fit(*learner\u args[0],**learner\u args[1])
实际上,这两种方法都有效:如果我命名所有的东西,或者对位置参数进行元组化,然后对命名的参数进行口述。我认为它有效;我只需要做:
learner\u args=(args,kwargs)
当我通过它时,做
learner.fit(*learner\u args[0],**learner\u args[1])
事实上,这两种方法都有效:如果我命名所有东西,或者对位置参数进行元组化,并记录命名的参数。