2016-05-10 7 views
2

私はこのようなPythonの関数を書きたい:Pythonで関数の戻り値の数を検出することは可能ですか?

def foo(): 
    if x: 
     return y 
    else: 
     return y, z 

それは可能ですか?可能であれば、戻り値の数をどのように検出できますか?

+0

代わりにタプルまたはリストを返しますか? –

+0

はい、私はそれを知っていますが、このようにすることが可能かどうか知りたいのですが? – Navid777

+0

その目的は何ですか?後でそのデータで何をしたいですか? – AKS

答えて

1

常に2つのタプルを返すように機能を変更する方が簡単かもしれ:

def foo(): 
    if x: 
     return y, None 
    else: 
     return y, z 

または私が不在の説得力のある理由はないんだろう。

def foo(z_default = None): 
    # plug in whatever default makes sense in place of None 
    # and the caller can override the default if he wants to 
    if x: 
     return y, z_default 
    else: 
     return y, z 
0

はい、可能です。しかし、if条件がfalseの場合、関数はインデックス0にy、インデックス1にはzのタプルを返します。タプル変数の戻り値をキャッチし、タプルの関数len()を使用して戻り値の数を確認できます。

0

をはい、それは可能性が高い:

def foo(): 
    if x: 
     return y 
    else: 
     return y, z 

result = foo() 
the_number_of_return_values_of_foo_function = \ 
     1 if type(result) is not tuple else len(tuple) 

良い夜間。

関連する問題