
Questo articolo descrive come restituire più valori da una funzione in Python.
- Restituisce più valori usando le virgole
- Elenco di ritorno
Vedere il seguente articolo per le nozioni di base sulle funzioni in Python.
Restituisce più valori usando le virgole
In Python, puoi restituire più valori semplicemente restituendoli separati da virgole.
Ad esempio, definire una funzione che restituisca una stringa e un intero come segue:
def test():
return 'abc', 100
In Python, i valori separati da virgola sono considerati tuple senza parentesi, eccetto dove richiesto dalla sintassi. Per questo motivo la funzione nell’esempio precedente, arriva una tupla con ogni valore come elemento.
Nota che in realtà è la virgola a formare una tupla, non le parentesi. Le parentesi sono facoltative, tranne nel caso della tupla vuota, o quando sono necessarie per evitare ambiguità sintattiche.
Tipi incorporati – Tuple — Documentazione Python 3.7.4
result = test()
print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>
Ogni elemento ha un tipo definito nella funzione.
print(result[0])
print(type(result[0]))
# abc
# <class 'str'>
print(result[1])
print(type(result[1]))
# 100
# <class 'int'>
Ovviamente, specificare un indice che supera il numero di valori di ritorno generi un errore.
# print(result[2])
# IndexError: tuple index out of range
È possibile decomprimere e arrivare più valori di ritorno a variabili diverse.
a, b = test()
print(a)
# abc
print(b)
# 100
Lo stesso per tre o più valori di ritorno.
def test2():
return 'abc', 100, [0, 1, 2]
a, b, c = test2()
print(a)
# abc
print(b)
# 100
print(c)
# [0, 1, 2]
Elenco di ritorno
L’uso di [] riporta l’elenco anziché la tupla.
def test_list():
return ['abc', 100]
result = test_list()
print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>
