您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python如何从函数返回多个值?

Python如何从函数返回多个值?

由于return语句中getName指定了 多个元素

def getName(self):
   return self.first_name, self.last_name

Python将返回一个基本上包含它们的容器对象。

在这种情况下,返回以 逗号分隔一组 元素会创建 一个元组 。多个值 只能在容器内返回

让我们使用一个返回多个值的简单函数

def foo(a, b):
    return a, b

您可以查看使用dis.dis,Python字节码的反汇编程序生成的字节码。对于不带括号的逗号分隔值,它看起来像这样:

>>> import dis
>>> def foo(a, b):
...     return a,b        
>>> dis.dis(foo)
  2           0 LOAD_FAST                0 (a)
              3 LOAD_FAST                1 (b)
              6 BUILD_TUPLE              2
              9 RETURN_VALUE

如您所见,值首先使用加载到内部堆栈中LOAD_FAST,然后生成一个BUILD_TUPLE(抓住2放置在堆栈上的先前元素)。由于存在逗号,Python知道创建一个元组

您也可以使用来指定其他返回类型,例如列表[]。对于这种情况,BUILD_LIST将按照与元组等效的相同语义发布a :

>>> def foo_list(a, b):
...     return [a, b]
>>> dis.dis(foo_list)
  2           0 LOAD_FAST                0 (a)
              3 LOAD_FAST                1 (b)
              6 BUILD_LIST               2
              9 RETURN_VALUE

返回的对象的类型实际上取决于方括号的存在(()如果至少有一个逗号,则可以省略元组)。[]创建列表和{}集合。字典需要key:val成对。

总而言之, 返回一个实际对象 。如果该对象是容器类型,则它可以包含多个值,给人以返回多个结果的印象。然后,通常的方法是直接解压缩它们:

>>> first_name, last_name = f.getName()
>>> print (first_name, last_name)

除此之外,您的Java方式正泄漏到Python中:-)

在Python中编写类时不要使用getter,请使用properties

python 2022/1/1 18:43:13 有480人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶