如何从Python 3中的函数一次返回多个值

今天,我们与您分享我们在medium.com上找到文章的翻译作者Vivek Coder讨论了从Python中的函数返回值的方法,并解释了如何区分不同的数据结构。





图片来自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中的函数返回多个值的方法。而且,正如您所看到的,实际上有很多方法。



学习材料并不断发展您的编程技能。感谢您的关注!



All Articles