Come restituire più valori in una funzione Python

Attività commerciale

In C, restituire più valori di ritorno da una funzione è abbastanza noioso, ma in Python, è molto facile da fare.

Ritorno separato da virgole

In Python, si può semplicemente restituire una lista di stringhe o numeri separati da virgole.

Come esempio, definite una funzione che restituisce solo una stringa e un numero come mostrato qui sotto, con ciascuno separato da una virgola dopo il ritorno.

def test():
    return 'abc', 100

In Python, i valori separati da virgola sono considerati tuple senza parentesi, eccetto dove sintatticamente necessario. Pertanto, la funzione nell'esempio precedente restituirà una tupla con ogni valore come elemento.

È la virgola che crea la tupla, non le parentesi tonde. Le parentesi tonde possono essere omesse, tranne nel caso di tuple vuote o quando è necessario per evitare ambiguità sintattiche.
Built-in Types — Python 3.10.0 Documentation

Il tipo del valore di ritorno è una tupla.

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

Ogni elemento sarà del tipo definito dalla funzione.

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

Errore se si specifica un indice che supera il numero di valori di ritorno definiti.

# print(result[2])
# IndexError: tuple index out of range

Può essere spacchettato e più valori di ritorno possono essere assegnati a variabili separate.

a, b = test()

print(a)
# abc

print(b)
# 100

Lo stesso vale se volete specificare tre o più valori di ritorno invece di due soli.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

Restituisce una lista.

[]Se lo racchiudete con questo, il valore di ritorno sarà una lista invece di una tupla.

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>