Python:函数可以返回一个数组和一个变量吗?

时间:2013-10-22 01:22:28

标签: python arrays function

有一种简单的方法可以让函数返回一个np.array和一个变量吗?

例如:

my_array = np.zeros(3)
my_variable = 0.

def my_function():
    my_array = np.array([1.,2.,3.])
    my_variable = 99.
    return my_array,my_variable

my_function()

以便在函数中计算的值可以在代码中使用?以上忽略了函数中计算的值。

我尝试返回一个元组{my_array,my_variable},但为np.array获取了不可用的类型消息

DN

4 个答案:

答案 0 :(得分:12)

你的功能是正确的。当您编写return my_array,my_variable时,您的函数实际上正在返回元组(my_array, my_variable)

您可以先将my_function()的返回值赋给变量,这将是我描述的元组:

result = my_function()

接下来,既然您知道元组中有多少项目,那么您可以unpack the tuple分为两个不同的值:

result_array, result_variable = result

或者你可以在一行中完成:

result_array, result_variable = my_function()

与返回元组和元组解包相关的其他注释:

如果我的函数在非异常失败或空案例中返回None,我有时会将这两个步骤分开:

result = my_function()
if result == None:
    print 'No results'
    return
a,b = result
# ...

除了解包之外,您还可以使用索引从元组中访问指定的项目:

result = my_function()
result_array = result[0]
result_variable = result[1]

如果出于任何原因你有一个单项元组:

return (my_variable,)

您可以使用相同(稍微笨拙)的一个逗号语法解压缩它:

my_variable, = my_function()

答案 1 :(得分:5)

它不会忽略返回的值,您不会将它们分配给变量。

my_array, my_variable = my_function()

答案 2 :(得分:1)

简单回答

my_array, my_variable = my_function()

答案 3 :(得分:0)

定义my_function后,请使用my_function = np.vectorize(my_function)。
例如,

def jinc(x):
    if x == 0.0:
        return 1
    return 2*j1(x)/x

jinc = np.vectorize(jinc)