関数を実行せずに返される要素の数を取得するにはどうすればよいですか? また、これらの要素のタイプを知っていますか?
私は次のようなことができることを知っています:
def foo ():
return 'a', 2
handle = foo()
print len(handle)
>> 2
しかし、ここで関数を実行する必要があります...
できません-関数は、入力またはその他の要因に応じて、さまざまな数の引数 (単一のタプルに格納されている) と、そのタプル内のさまざまな型の変数を返すことができます。(ばかげた)関数を考えてみましょう:
def foo(arg):
if arg:
return 1,2
else
return "foo","bar","baz"
今それを呼び出します:
foo(1) # (1,2)
foo(0) # ("foo","bar","baz")
関数が何を返すかを知る唯一の方法は、1) ソースを読むか、2) (信頼できる人なら) 関数のドキュメントを読むことです:-)。
いいえ。一般的に言えることは、関数は1 つのオブジェクトを返すということだけです。そのオブジェクトはタプルにすることができ、そのタプルには任意の数のオブジェクトを含めることができます。あなたの例では、2 つのオブジェクトを含むタプルを返しています
この関数を検討してください
import random
def foo():
choice = random.choice("abcd")
if choice == "a":
return 1,2,3 # Returns a tuple
if choice == "b":
return 4 # Returns an int
if choice == "c":
return "C" # Returns a str
if choice == "d":
return None # Returns None
明らかに、戻り値の型を知ることはできません