Python:函数能否返回数组和变量?
有没有一种简单的方法可以让函数返回np.array和变量 例如: 这样在函数中计算的值可以在以后的代码中使用?以上内容将忽略函数中计算的值 我试图返回一个元组{my_array,my_variable},但得到了np.array的不可破坏类型消息 DN简单答案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() 你的功能是正确的。当你写返回我的数组,
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)