【问题标题】:Python: Multiple return values assigned to each function?Python:为每个函数分配多个返回值?
【发布时间】:2018-06-30 04:17:44
【问题描述】:
def function_1():
return (5)
return (6)
return(7)
result_1 = function_1()
print(result_1)
为什么当我打印 function_1() 的调用时,只打印第一个值 5?
【问题讨论】:
标签:
python
python-3.x
function
calling-convention
【解决方案1】:
您需要以元组的形式返回多个值。
def function_1():
return 5, 6, 7
result_1 = function_1()
print(result_1)
a, b, c = function_1()
print(a, b, c)
这个输出:
(5, 6, 7)
5 6 7
【解决方案2】:
当您通过此 return (5) 行返回值 5 时,funtion_1 将返回该值并终止函数。这就是为什么后续行没有被执行。如果你想从一个函数返回多个值,那么你可以将它们作为tuple、list 等返回。比如:
def function_1():
return(5,6,7)
【解决方案3】:
为什么当我打印function_1()的调用时,只有第一个
值 5 打印出来了吗?
值“5”正在打印,因为当您调用function_1 时,function_1 将始终返回“5”并且它不会执行该函数中的下一行。这就是你总是获得相同价值的原因。
【解决方案4】:
您可以改用yield,制作生成器。 return 停止函数执行。代码如下:
def function_1():
yield (5)
yield (6)
yield (7)
for result in function_1():
print(result)
【解决方案5】:
您的函数将在第一个成功的return 语句处终止,在本例中为5。正如其他人所建议的那样,您可以将这些值包装在 tuple 或 list 中。您还可以返回包含这些多个值的字典:
def function_1():
return {'first': 5, 'second': 6, 'third': 7}
那么你可以这样称呼它:
>>> result_1 = function_1()
>>> result_1
{'first': 5, 'second': 6, 'third': 7}
>>> result_1['first']
5
>>> result_1['second']
6
>>> result_1['third']
7