【问题标题】:How to refer a function variable as a parameter of another function?如何将函数变量引用为另一个函数的参数?
【发布时间】:2018-03-09 01:27:12
【问题描述】:

我想写一个函数(function_A)通过迭代优化另一个函数(function_B)的参数。待优化参数的函数为:

 def function_B(a=10, b=12, c=14, d= 18):
    value = (...)
    return value

现在我想找到参数a,b,c,d 的组合,这将根据特定标准优化结果。所以我写了如下函数——比如——用户可以指定优化哪个参数,本例我们选择优化参数a

def function_A(variable = a, min = 10, max = 20):

    value = np.zeros((max - min + 1)) # initialize an empty vector to store results
    count = 0

    for i in np.linspace(1, 20, 20, endpoint=True):
        ans = function_B(variable = i)
        value[count] = ans
        count = count + 1

    return value

问题是,我不知道如何在function_A 中指定a。我尝试使用:

function_A(variable = a, ...)

function_A(variable = 'a', ...)

但两者都不起作用...如何指定'a' 是我要迭代的参数?

【问题讨论】:

    标签: python function parameters refer


    【解决方案1】:

    这是一个非常简单的例子:

    def A(a=5, b=4):
        return a, b
    
    def B(var):
        x = {var:'numberyouwant'}
        return A(**x)
    

    因此,在您的情况下,将变量作为字符串传递并将其传递到字典中,最后使用关键字变量使用您要优化的参数更新您的函数。

    def function_A(variable = 'a', min = 10, max = 20):
    
        value = np.zeros((max - min + 1)) # initialize an empty vector to store results
        count = 0
    
        for i in np.linspace(1, 20, 20, endpoint=True):
            temp_dict = {variable: i}
            ans = function_B(**temp_dict)
            value[count] = ans
            count = count + 1
    
    return value
    

    【讨论】:

    • 谢谢,但我还是不太明白..我尝试了下面的代码作为一个简单的例子,得到了错误消息。你能告诉我哪里错了吗?
    • def A(a = 1, b = 2): return a+bdef B(var = 'a', min = 10): temp_dict = {var:min} ans = A(var) return ans 然后我测试它B(var = 'b') 并得到错误消息 TypeError: cannot concatenate 'str' and 'int' objects
    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2017-11-04
    • 2018-11-20
    • 2022-01-19
    相关资源
    最近更新 更多