图片来自Unsplash网站。作者:Vipul Jha
Python的便利之处在于它允许您一次从一个函数同时返回多个值。为此,您需要使用运算符
return
并返回具有多个值的数据结构-例如,每周工作时间总数的列表。
def hours_to_write(happy_hours):
week1 = happy_hours + 2
week2 = happy_hours + 4
week3 = happy_hours + 6
return [week1, week2, week3]
print(hours_to_write(4))
# [6, 8, 10]
Python中的数据结构用于存储可由语句返回的数据集合
return
。在本文中,我们将研究使用相似结构(字典,列表和元组)以及使用类和数据类(Python 3.7+)返回多个值的方法。
方法1:使用字典返回值
字典包含
key:value
用大括号({}
)括起来的键-值对()的元素组合。
我认为,如果您知道访问值的键,则字典是工作的最佳选择。以下是一本字典,其中的关键是人的名字,而相应的值是年龄。
people={
'Robin': 24,
'Odin': 26,
'David': 25
}
现在,我们继续执行返回带有键值对的字典的函数。
# A Python program to return multiple values using dictionary
# This function returns a dictionary
def people_age():
d = dict();
d['Jack'] = 30
d['Kim'] = 28
d['Bob'] = 27
return d
d = people_age()
print(d)
# {'Bob': 27, 'Jack': 30, 'Kim': 28}
方法2:使用列表返回值
列表类似于使用方括号形成的数组,但是它们可以包含不同类型的元素。列表也不同于元组,因为它们是可变数据类型。也就是说,任何列表都可以更改。
列表是Python中用途最广泛的数据结构之一,因为它们不需要统一(它们可以包含字符串,数字和元素)。有时,列表甚至与堆栈或队列一起使用。
# A Python program to return multiple values using list
def test():
str1 = "Happy"
str2 = "Coding"
return [str1, str2];
list = test()
print(list)
# ['Happy', 'Coding']
这是一个返回带有自然数的列表的示例。
def natural_numbers(numbers = []):
for i in range(1, 16):
numbers.append(i)
return numbers
print(natural_numbers())
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
方法3:使用元组返回值
元组是Python中有序的不可变对象,通常用于存储异构数据的集合。
元组类似于列表,但是在声明后不能更改。同样,通常,元组比列表工作更快。您可以通过使用逗号分隔项目来创建元组:
x, y, z
或(x, y, z)
。
在此示例中,元组用于存储有关员工的数据(姓名,工作年限和公司名称)。
Bob = ("Bob", 7, "Google")
这是编写返回元组的函数的示例。
# A Python program to return multiple values using tuple
# This function returns a tuple
def fun():
str1 = "Happy"
str2 = "Coding"
return str1, str2; # we could also write (str1, str2)
str1, str2= fun()
print(str1)
print(str2)
# Happy
Coding
请注意,我们已经省略了语句中的括号
return
,因为只需用逗号分隔每个元素即可返回元组(如上所示)就足够了。
不要忘记,您可以使用逗号而不是括号来创建元组。仅在使用空元组时才需要使用括号,否则您需要避免语法不精确。
为了更好地了解元组,请参阅Python 3官方文档(该文档为英文版-Ed。)。
下面是使用括号返回元组的函数示例。
def student(name, class):
return (name, class)
print(student("Brayan", 10))
# ('Brayan', 10)
同样,元组很容易与列表混淆(毕竟,两者都是元素的容器)。但是,要牢记一个根本区别:元组不能更改,但列表可以更改。
方法4:使用对象返回值
这里的一切都与C / C ++或Java中的相同。您可以简单地形成一个类(在C中称为结构)来存储多个特征并返回该类的对象。
# A Python program to return multiple values using class
class Intro:
def __init__(self):
self.str1 = "hello"
self.str2 = "world"
# This function returns an object of Intro
def message():
return Intro()
x = message()
print(x.str1)
print(x.str2)
# hello
world
方法5:使用数据类返回值(Python 3.7+)
Python 3.7+中的数据类帮助返回带有自动添加的唯一方法,模块
typing
和其他有用工具的类。
from dataclasses import dataclass
@dataclass
class Item_list:
name: str
perunit_cost: float
quantity_available: int = 0
def total_cost(self) -> float:
return self.perunit_cost * self.quantity_available
book = Item_list("better programming.", 50, 2)
x = book.total_cost()
print(x)
print(book)
# 100
Item_list(name='better programming.', perunit_cost=50,
quantity_available=2)
为了更好地理解数据类,请参阅正式的Python 3文档(该文档为英文-Ed。)。
输出量
本文的目的是使您熟悉从Python中的函数返回多个值的方法。而且,正如您所看到的,实际上有很多方法。
学习材料并不断发展您的编程技能。感谢您的关注!