2

関数を実行せずに返される要素の数を取得するにはどうすればよいですか? また、これらの要素のタイプを知っていますか?

私は次のようなことができることを知っています:

def foo ():
    return 'a', 2

handle = foo()
print len(handle)
>> 2

しかし、ここで関数を実行する必要があります...

4

2 に答える 2

3

できません-関数は、入力またはその他の要因に応じて、さまざまな数の引数 (単一のタプルに格納されている) と、そのタプル内のさまざまな型の変数を返すことができます。(ばかげた)関数を考えてみましょう:

def foo(arg):
    if arg:
       return 1,2
    else
       return "foo","bar","baz"

今それを呼び出します:

foo(1) # (1,2)
foo(0) # ("foo","bar","baz")

関数が何を返すかを知る唯一の方法は、1) ソースを読むか、2) (信頼できる人なら) 関数のドキュメントを読むことです:-)。

于 2012-08-28T01:34:22.750 に答える
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

明らかに、戻り値の型を知ることはできません

于 2012-08-28T01:35:43.717 に答える