MATLAB を知らないので、MATLABについて話すことはnargout
できません。正しく使用する方法を想像することもできません。ただし、ビューを Python 関数 (またはメソッド) が実際に実行する内容に変更したい場合があります)。
実際、Python は常に正確に 1 つの値を返します。または、None であるか、特定の型の単一の値であるか、そのtuple
型の単一のオブジェクトです。
return
コマンドがないNone
場合、関数本体が終了すると関数は戻ります。return
body の最後、または body の最後に引数なしで明示的に記述した場合と同じですreturn None
。
を使用した場合return None
( はNone
変数に格納できます)、またはreturn
引数なしで、None
は呼び出し元に返されます。
の場合return single
、single
オブジェクトは呼び出し元に返されます。
の場合return v1, v2, v3
、実際にはタプルを返します(v1, v2, v3)
。かっこを書く必要がないのは、単なる構文糖衣です。
このresult1, result2, result3 = f()
場合の は、もう 1 つのシンタックス シュガーです。はタプルを返し、そのf()
要素は指定された変数に自動的に抽出されます。あなたは実際に行います:
result1, result2, result3 = (v1, v2, v3)
また
t = f() # where t is the (v1, v2, v3)
result1, result2, result3 = t
実際、Python では、他の言語でよくあるように出力引数を定義することはできません。引数オブジェクトのアドレスを渡すという観点から考えることができ、渡されたオブジェクトが変更できる場合は、それを変更できます。None
ただし、たとえば、最初に値があった渡された引数に新しい結果を取得することはできません。関数の出力引数を介して Python 変数を割り当てることはできません。Python にはそのようなメカニズムはありません。
関数内から新しく作成された値 (オブジェクト) を返す唯一の自然で直接的な方法は、return
コマンドを使用することです。ただし、Python 関数は、返される引数の数を制限しません。(まあ、それがタプルだった場合、後で要素に分割できる常に単一のものです。)
呼び出し元のコードで実際に返されたものをテストしたい場合は、次の値が返された場合に特別なことを行う独自の関数を作成None
できますsingle
:len(t)
返されたタプルでt
)。single
関数は、各タプル要素のタイプまたはタイプをテストし、それに応じて機能することもできます。