📜  在Python中返回多个值

📅  最后修改于: 2022-05-13 01:54:55.137000             🧑  作者: Mango

在Python中返回多个值

在Python中,我们可以从一个函数返回多个值。以下是不同的方法

1)使用对象:这类似于C/C++和Java,我们可以创建一个类(在C中,结构)来保存多个值并返回该类的一个对象。

# A Python program to return multiple 
# values from a method using class
class Test:
    def __init__(self):
        self.str = "geeksforgeeks"
        self.x = 20   
  
# This function returns an object of Test
def fun():
    return Test()
      
# Driver code to test above method
t = fun() 
print(t.str)
print(t.x)

输出:

geeksforgeeks
20

以下是一些改变 C++/ Java世界的有趣方法。

2)使用元组:元组是一个逗号分隔的项目序列。它是使用或不使用 () 创建的。元组是不可变的。有关元组和列表的详细信息,请参阅this。

# A Python program to return multiple 
# values from a method using tuple
  
# This function returns a tuple
def fun():
    str = "geeksforgeeks"
    x   = 20
    return str, x;  # Return tuple, we could also
                    # write (str, x)
  
# Driver code to test above method
str, x = fun() # Assign returned tuple
print(str)
print(x)

输出:

geeksforgeeks
20

3) 使用列表:列表就像使用方括号创建的项目数组。它们与数组不同,因为它们可以包含不同类型的项目。列表与元组不同,因为它们是可变的。

# A Python program to return multiple 
# values from a method using list
  
# This function returns a list
def fun():
    str = "geeksforgeeks"
    x = 20   
    return [str, x];  
  
# Driver code to test above method
list = fun() 
print(list)

输出:

['geeksforgeeks', 20]

4)使用字典:字典类似于其他语言中的哈希或映射。有关字典的详细信息,请参见此处。

# A Python program to return multiple 
# values from a method using dictionary
  
# This function returns a dictionary
def fun():
    d = dict(); 
    d['str'] = "GeeksforGeeks"
    d['x']   = 20
    return d
  
# Driver code to test above method
d = fun() 
print(d)

输出:

{'x': 20, 'str': 'GeeksforGeeks'}


5)使用数据类(Python 3.7+):在Python 3.7 及以上版本中,数据类可用于返回具有自动添加的唯一方法的类。 Data Class 模块有一个装饰器和函数,用于在用户定义的类中自动添加生成的特殊方法,例如 __init__() 和 __repr__()。

from dataclasses import dataclass
  
@dataclass
class Book_list:
    name: str
    perunit_cost: float
    quantity_available: int = 0
          
    # function to calculate total cost    
    def total_cost(self) -> float:
        return self.perunit_cost * self.quantity_available
      
book = Book_list("Introduction to programming.", 300, 3)
x = book.total_cost()
  
# print the total cost
# of the book
print(x)
  
# print book details
print(book)
  
# 900
Book_list(name='Python programming.',
          perunit_cost=200,
          quantity_available=3)

输出:

900
Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)
Book_list(name='Python programming.', perunit_cost=200, quantity_available=3)

参考:
http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python