返回元组
函数可以直接返回一个元组,元组是一种有序的序列类型,可以包含多个元素。调用者可以通过元组解包来接收返回的多个值。
def multi_return():
return ('张三', 12)
result = multi_return()
print(result) 输出: ('张三', 12)
```
返回列表
函数也可以返回一个列表,列表是一种有序的集合类型,同样可以通过解包来接收返回的多个值。
def multi_return_list():
return ['张三', 12]
result = multi_return_list()
print(result) 输出: ['张三', 12]
```
使用序列解包
在调用函数时,可以使用序列解包来直接接收返回的多个值,而不需要显式地创建元组或列表。
def sum_and_avg(numbers):
sum_val = 0
count = 0
for num in numbers:
if isinstance(num, (int, float)):
count += 1
sum_val += num
return sum_val, sum_val / count
my_list = [20, 15, 2.8, 'a', 35, 5.9, -1.8]
sum_val, avg = sum_and_avg(my_list)
print(sum_val) 输出: 70.4
print(avg) 输出: 10.06666
```
返回命名元组
如果需要返回的多个值有明确的名称或含义,可以使用`collections.namedtuple`来创建一个命名元组,这样调用者可以通过名称来访问返回的值。
from collections import namedtuple
Person = namedtuple('Person', ['name', 'age'])
def get_person_info():
return Person('张三', 12)
person = get_person_info()
print(person.name) 输出: 张三
print(person.age) 输出: 12
```
建议
选择合适的返回类型:根据具体需求选择返回元组、列表还是命名元组。如果返回的值有明确的名称或顺序,使用命名元组可以提高代码的可读性。
解包返回值:在调用函数时,如果返回值是元组或列表,可以使用序列解包来简化代码,使接收多个返回值更加直观和方便。