
如果程序需要有多個(gè)返回值,則既可將多個(gè)值包裝成列表之后返回,也可直接返回多個(gè)值。如果?Python?函數(shù)直接返回多個(gè)值,Python 會(huì)自動(dòng)將多個(gè)返回值封裝成元組。
如下程序示范了函數(shù)直接返回多個(gè)值的情形:
def?sum_and_avg(list):
sum?=?0
count?=?0
for?e?in?list:
#?如果元素e是數(shù)值
if?isinstance(e,?int)?or?isinstance(e,?float):
count?+=?1
sum?+=?e
return?sum,?sum?/?count
my_list?=?[20,?15,?2.8,?'a',?35,?5.9,?-1.8]
#?獲取sum_and_avg函數(shù)返回的多個(gè)值,多個(gè)返回值被封裝成元組
tp?=?sum_and_avg(my_list)?#①
print(tp)
上面程序中的第 9 行代碼返回了多個(gè)值,當(dāng) ① 號代碼調(diào)用該函數(shù)時(shí),該函數(shù)返回的多個(gè)值將會(huì)被自動(dòng)封裝成元組,因此程序看到 tp 是一個(gè)包含兩個(gè)元素(由于被調(diào)用函數(shù)返回了兩個(gè)值)的元組。
此外,也可使用 Python 提供的序列解包功能,直接使用多個(gè)變量接收函數(shù)返回的多個(gè)值。例如如下代碼:
#?使用序列解包來獲取多個(gè)返回值
s,?avg?=?sum_and_avg(my_list)?#②
print(s)
print(avg)
上面程序中的 ② 號代碼直接使用兩個(gè)變量來接收 sum_and_avg() 函數(shù)返回的兩個(gè)值,這就是利用了 Python 提供的序列解包功能。