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

dcn*_*lls 11 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()
Run Code Online (Sandbox Code Playgroud)

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

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

DN

Jon*_*art 12

你的功能是正确的.当你写作时return my_array,my_variable,你的函数实际上是返回一个元组(my_array, my_variable).

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

result = my_function()
Run Code Online (Sandbox Code Playgroud)

接下来,由于您知道元组中有多少项提前,您可以将元组解压缩为两个不同的值:

result_array, result_variable = result
Run Code Online (Sandbox Code Playgroud)

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

result_array, result_variable = my_function()
Run Code Online (Sandbox Code Playgroud)

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

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

result = my_function()
if result == None:
    print 'No results'
    return
a,b = result
# ...
Run Code Online (Sandbox Code Playgroud)

您也可以使用索引从元组访问指定的项目,而不是解压缩:

result = my_function()
result_array = result[0]
result_variable = result[1]
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你有一个单项元组:

return (my_variable,)
Run Code Online (Sandbox Code Playgroud)

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

my_variable, = my_function()
Run Code Online (Sandbox Code Playgroud)


And*_*ndy 6

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

my_array, my_variable = my_function()
Run Code Online (Sandbox Code Playgroud)

  • `my_array,my_variable` _is_一个元组.这是制作元组的逗号,而不是parens.仅在某些地方需要使用parens进行消歧,例如在函数调用中.(他们几乎总是无害的,而且往往使事情更易读,即使他们没有必要,只是在Python的唯一场所,复杂的代数表达式,其中不必要的括号往往是值得反正打字之外.) (3认同)