在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