Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:函数能否返回数组和变量?_Python_Arrays_Function - Fatal编程技术网

Python:函数能否返回数组和变量?

Python:函数能否返回数组和变量?,python,arrays,function,Python,Arrays,Function,有没有一种简单的方法可以让函数返回np.array和变量 例如: 这样在函数中计算的值可以在以后的代码中使用?以上内容将忽略函数中计算的值 我试图返回一个元组{my_array,my_variable},但得到了np.array的不可破坏类型消息 DN简单答案 my_array, my_variable = my_function() 它没有忽略返回的值,也没有将它们分配给变量 my_array, my_variable = my_function() 你的功能是正确的。当你写返回我的数组,

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

例如:

这样在函数中计算的值可以在以后的代码中使用?以上内容将忽略函数中计算的值

我试图返回一个元组{my_array,my_variable},但得到了np.array的不可破坏类型消息

DN

简单答案

my_array, my_variable = my_function()

它没有忽略返回的值,也没有将它们分配给变量

my_array, my_variable = my_function()

你的功能是正确的。当你写
返回我的数组,我的变量时,你的函数实际上是返回一个元组
(我的数组,我的变量)

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

result = my_function()
接下来,由于您提前知道元组中有多少项,因此可以将它们划分为两个不同的值:

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]
如果出于任何原因,您有一个1项元组:

return (my_variable,)
您可以使用相同的(稍微笨拙的)一个逗号语法将其解包:

my_variable, = my_function()

定义my_函数后,使用my_函数=np.vectorize(my_函数)。
比如说,

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

jinc = np.vectorize(jinc)

元组是用括号写的-
()
-而不是大括号-
{}
。如果要返回元组,它应该是
(我的数组,我的变量)
。使用花括号返回的是
dict
,这要求元素是可散列的,在这种情况下,
list
不是。@justhalf:使用不带冒号的花括号生成的是
集,而不是
dict
。上面显示的代码没有错误,只是没有将结果存储在任何地方。@abamert:oops,对不起,我的数组,我的变量是元组。构成元组的是逗号,而不是paren。只有在某些地方,例如在函数调用内部,才需要使用paren来消除歧义。(它们几乎总是无害的,并且常常使事情更具可读性,即使它们不是Python中唯一需要的地方,在复杂的代数表达式之外,不必要的参数通常都值得键入。)“返回元组”方法是有效的,也是必要的,因为数组比size=3示例大得多。谢谢,这个例子允许x和返回的值是numpy数组。
def jinc(x):
    if x == 0.0:
        return 1
    return 2*j1(x)/x

jinc = np.vectorize(jinc)