17

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

4 に答える 4

17

あなたの機能は正しいです。あなたが書くときreturn my_array,my_variable、あなたの関数は実際にタプルを返してい(my_array, my_variable)ます。

最初に、の戻り値をmy_function()変数に割り当てることができます。これは、私が説明するこのタプルになります。

result = my_function()

次に、タプルに含まれるアイテムの数が事前にわかっているので、タプルを 2 つの異なる値にアンパックできます。

result_array, result_variable = result

または、1 行で実行できます。

result_array, result_variable = my_function()

タプルを返すこと、およびタプルのアンパックに関するその他の注意事項:

None関数が例外的でない失敗または空の場合に戻ることができる場合、2 つのステップを別々にしておくことがあります。

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,)

同じ (少しぎこちない) 1 つのコンマの構文で展開できます。

my_variable, = my_function()
于 2013-10-22T01:27:27.720 に答える
12

返された値を無視しているのではなく、変数に割り当てていません。

my_array, my_variable = my_function()
于 2013-10-22T01:26:41.823 に答える
1

簡単な答え

my_array, my_variable = my_function()
于 2013-10-22T01:24:14.517 に答える