很难提出一个问题......我想创建一个可以返回例如字符串或列表的函数。它将返回取决于该值分配给后者的实例的类型。例如,考虑以下代码尝试:
def do_something():
some_list = [1, 4, 7, 8]
some_text = "Hello"
return some_text or some_list
text: str = do_something() # want text to become some_text (i.e. "Hello")
List: list[int] = do_something() # List should take some_list value (so [1, 4, 7, 8])
print(text, List) # want it to print < Hello [1, 4, 7, 8] >
我知道,由于显而易见的原因,以下代码将无法工作。我还知道我可以在 return 语句中返回一个列表或元组,例如
return some_text, some_list
。但随后我需要说明采用哪个值,我真的不想做出类似 text: str = do_something()[0]
的东西。
那是因为我只想创建一个函数,该函数将返回主值(函数主任务)和一些不太重要且完全可选的附加值。对我来说使用元组意味着它们同样重要,但它们不是,默认情况下 return 总是应该返回第一个值。我可以用 python 做到这一点,还是完全不可能?
这是不可能的。
您最好的选择可能是创建第二个函数来返回其他数据类型或将您想要的数据传递给该函数:
def do_something(as_list = False):
some_list = [1, 4, 7, 8]
some_text = "Hello"
if as_list:
return some_list
else:
return some_text
text: str = do_something() # want text to become some_text (i.e. "Hello")
List: list[int] = do_something(as_list=True) # List should take some_list value (so [1, 4, 7, 8])
print(text, List) # want it to print < Hello [1, 4, 7, 8] >
是否创建不同的函数或将其作为参数传递主要取决于您的业务逻辑和需求。
你可以这样做:
def do_something(var):
some_list = [1, 4, 7, 8]
some_text = "Hello"
if type(var) == str:
return some_text
elif type(var) == list:
return some_list
else:
return None
text = ""
text = do_something(text)
lst = []
lst = do_something(lst)
print(text, lst)
这会导致
Hello [1, 4, 7, 8]