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

不。一般来说,你只能说一个函数只返回一个对象。该对象可以是一个元组,并且该元组可以包含任意数量的对象。在您的示例中,您将返回一个包含 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 回答