我正在看麻省理工学院开放课程教材Python中的计算机科学和编程入门。在介绍元组的第五课中,教授说you are only allowed to return one object in functions。然后她说,元组可以方便地返回多个对象值。(对于任何想看这小段课的人来说,这节课从06:15分钟开始)。问题是关于麻省理工学院的讲座:
是的,我们可以使用元组返回和收集一些值。另一方面,Python中的函数已经可以通过用逗号分隔它们来返回多个值。结果,我对讲师说的话感到困惑。用逗号分隔返回2个或多个值是否意味着这些对象正在成为元组的一个项,尽管它没有显式声明?我遗漏了什么?换句话说,用逗号分隔为x,y和括号中分隔为(x,y)有什么区别。您可以使用下面的函数提供解释。谢谢。
def smth(x,y):
x = y % 2
y = x % 5
return x, y发布于 2020-06-12 20:08:21
是的,它们正在变成元组。如果运行以下代码,您会发现类型是tuple
def smth(x,y):
x = y % 2
y = x % 5
return x, y
x=smth(10,20)
print(x)
print(type(x))发布于 2020-06-12 20:11:42
返回语句return x, y实际上只是return (x, y)的一个快捷方式。
python解释器同样地解释这些内容。
>>> def smth(x,y):
... x = y%2
... y = x%2
... return x,y
>>> smth(1,2)
(0, 0)
>>> type(smth(1,2))
<class 'tuple'>参数的自动解压缩也是以相同的方式进行的:
a,b = smth(1,2)和(a, b) = smth(1,2)是等价的代码。
但是,第一个版本的可读性要高得多。
在这对类似问题的回答中,可以找到这两个语句相等的具体解释。
发布于 2020-06-12 20:11:09
实际上,您编写的函数是返回一个元组。只有空元组才需要括号。在docs:6.2.3。括号形式中看到这个位置
https://stackoverflow.com/questions/62351700
复制相似问题