簡體   English   中英

通過Python中的另一個函數傳遞函數參數

[英]Passing a function argument through another function in 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_argument”是此函數的無效關鍵字參數

所以我知道我不能將它作為簡單的字符串傳遞,所以我的問題是:

我該如何通過?

您可以在調用函數時使用**

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')

以我的猜測,您正在嘗試實現要使用不同屬性啟動的分類器創建類,如下所示? 您可以在__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函數而不調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM