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'>