从 Python 函数中返回多个值

Manav Narula 2023年10月10日
  1. 在 Python 中使用元组从函数中返回多个值
  2. 使用列表从 Python 函数中返回多个值
  3. 在 Python 中使用字典从函数中返回多个值
  4. 使用一个类从 Python 中的函数中返回多个值
  5. 在 Python 中使用 dataclass 从一个函数中返回多个值
从 Python 函数中返回多个值

函数是任何编程语言的重要组成部分。函数是一个代码块,它可以被调用来执行编程中的一个特定操作。通常,一个函数用来返回一个值。这个值可以是一个数字,一个字符串,或者任何其他数据类型。

在本教程中,我们将讨论创建一个返回多个值的函数的不同方法。我们将从用户定义的函数中返回不同的数据对象,如列表、字典和其他对象来实现这一目的。

在 Python 中使用元组从函数中返回多个值

如果我们从函数中返回的值用逗号隔开,它们被认为是一个元组。元组通常用括号括起来。在下面的代码中,我们将从 Python 函数中返回一个元组。

def return_multi(a):
    b = a + 1
    c = a + 2
    return b, c


x = return_multi(5)
print(x, type(x))

输出:

(6, 7) <class 'tuple'>

使用列表从 Python 函数中返回多个值

Python 列表用于在一个共同的名称下和特定的位置存储不同的项目。函数也可以在一个列表中返回多个值,如下图所示。

def return_multi(a):
    b = a + 1
    c = a + 2
    return [b, c]


x = return_multi(5)
print(x, type(x))

输出:

[6, 7] <class 'list'>

在 Python 中使用字典从函数中返回多个值

在 Python 中,字典是用来存储键值对的。我们可以通过从一个函数中返回一个键值不同的字典来获得更有条理的最终输出。请看下面的例子。

def return_multi(a):
    b = a + 1
    c = a + 2
    return {"b": b, "c": c}


x = return_multi(5)
print(x, type(x))

输出:

{'b': 6, 'c': 7} <class 'dict'>

使用一个类从 Python 中的函数中返回多个值

类包含不同的数据成员和函数,并允许我们创建对象来访问这些成员。我们可以根据类的结构和其数据成员,返回这种用户定义类的对象。例如:

class return_values:
    def __init__(self, a, b):
        self.a = a
        self.b = b


def return_multi(a):
    b = a + 1
    c = a + 2
    t = return_values(b, c)
    return t


x = return_multi(5)
print(x.a, x.b, type(x))

输出:

6 7 <class '__main__.return_values'>

在 Python 中使用 dataclass 从一个函数中返回多个值

dataclass 是 Python v3.7 及以上版本中新增的一个有趣的特性。它们类似于传统的类,但主要用于存储数据,而且它们的所有基本功能都已经实现。@dataclass 装饰器和 dataclass 模块被用来创建这样的对象。在下面的代码中,我们从一个函数中返回一个 dataclass

from dataclasses import dataclass


@dataclass
class return_values:
    a: int
    b: int


def return_multi(a):
    b = a + 1
    c = a + 2
    t = return_values(b, c)
    return t


x = return_multi(5)
print(x.a, x.b, type(x))

输出:

6 7 <class '__main__.return_values'>
作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Python Function