首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数中返回x,y和返回(x,y)有什么区别?

函数中返回x,y和返回(x,y)有什么区别?
EN

Stack Overflow用户
提问于 2020-06-12 20:04:08
回答 5查看 921关注 0票数 2

我正在看麻省理工学院开放课程教材Python中的计算机科学和编程入门。在介绍元组的第五课中,教授说you are only allowed to return one object in functions。然后她说,元组可以方便地返回多个对象值。(对于任何想看这小段课的人来说,这节课从06:15分钟开始)。问题是关于麻省理工学院的讲座:

是的,我们可以使用元组返回和收集一些值。另一方面,Python中的函数已经可以通过用逗号分隔它们来返回多个值。结果,我对讲师说的话感到困惑。用逗号分隔返回2个或多个值是否意味着这些对象正在成为元组的一个项,尽管它没有显式声明?我遗漏了什么?换句话说,用逗号分隔为x,y和括号中分隔为(x,y)有什么区别。您可以使用下面的函数提供解释。谢谢。

代码语言:javascript
复制
def smth(x,y):

   x = y % 2
   y = x % 5

   return x, y
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-06-12 20:08:21

是的,它们正在变成元组。如果运行以下代码,您会发现类型是tuple

代码语言:javascript
复制
def smth(x,y):

   x = y % 2
   y = x % 5

   return x, y

x=smth(10,20)
print(x)
print(type(x))
票数 2
EN

Stack Overflow用户

发布于 2020-06-12 20:11:42

返回语句return x, y实际上只是return (x, y)的一个快捷方式。

python解释器同样地解释这些内容。

代码语言:javascript
复制
>>> 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)是等价的代码。

但是,第一个版本的可读性要高得多。

对类似问题的回答中,可以找到这两个语句相等的具体解释。

票数 2
EN

Stack Overflow用户

发布于 2020-06-12 20:11:09

实际上,您编写的函数是返回一个元组。只有空元组才需要括号。在docs:6.2.3。括号形式中看到这个位置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62351700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档