将可选参数作为字符串或数组传递

时间:2016-11-11 14:32:26

标签: python parameter-passing

我有这个按预期工作的功能

import numpy as np
def my_fun(X, Weights = None):
     if Weights is None:
            np.random.normal(0,1,1)
     else:
            Weights + 1

因此我可以使用my_fun(my_X)或my_fun(my_X,Weights = my_weights)调用my_fun,其中my_weights是一个数组。

但是,我需要在my_fun中包含第三个选项,理想情况下我想将该参数作为字符串传递。像这样的东西。

import numpy as np
    def my_fun(X, Weights = None):
         if Weights is None:
                np.random.normal(0,1,1)
         elif Weights == 'My_string':
                np.random.beta(1,1,1)
         else:
                Weights + 1

如果我尝试将my_fun称为my_fun(my_X,Weights ='a'),则会出现以下错误: FutureWarning:元素比较失败;返回标量......

有关如何重塑my_fun的想法吗?

1 个答案:

答案 0 :(得分:0)

首先,我没有看到你X的目的,你从来没有在函数中使用它。为什么要发送呢?

您的功能中还需要return。你想要什么回报?目前尚不清楚。也许就是这样。

def my_fun(X, Weights = None):
     if Weights is None:
           X = np.random.normal(0,1,1)
     elif Weights == 'My_string':
            X = np.random.beta(1,1,1)
     else:
            Weights + 1
     return Weights,X

print( my_fun([1,2,3],Weights = 'My_string') )