Cum să returnați mai multe valori de returnare într-o funcție Python

Afaceri

În C, returnarea mai multor valori de returnare dintr-o funcție este destul de plictisitoare, dar în Python este foarte ușor de făcut.

Returnare separată prin virgule

În Python, puteți returna pur și simplu o listă de șiruri de caractere sau numere separate prin virgulă.

Ca exemplu, definiți o funcție care returnează doar un șir de caractere și un număr, după cum se arată mai jos, fiecare dintre acestea fiind separat de o virgulă după return.

def test():
    return 'abc', 100

În Python, valorile separate prin virgulă sunt considerate tupluri fără paranteze, cu excepția cazurilor în care este necesar din punct de vedere sintactic. Prin urmare, funcția din exemplul de mai sus va returna un tuple cu fiecare valoare ca element.

Virgula este cea care creează tupla, nu parantezele rotunde. Parantezele rotunde pot fi omise, cu excepția cazului în care este vorba de tupluri goale sau atunci când este necesar pentru a evita ambiguitățile sintactice.
Built-in Types — Python 3.10.0 Documentation

Tipul valorii de returnare este un tupluplu.

result = test()

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

Fiecare element va fi de tipul definit de funcție.

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

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

Eroare dacă specificați un indice care depășește numărul de valori de returnare pe care le-ați definit.

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

Acesta poate fi despachetat și mai multe valori de returnare pot fi atribuite la variabile separate.

a, b = test()

print(a)
# abc

print(b)
# 100

Același lucru este valabil și în cazul în care doriți să specificați trei sau mai multe valori de returnare în loc de doar două.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Returnează o listă.

[]Dacă îl includeți cu acest lucru, valoarea de returnare va fi o listă în loc de un tuple.

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

result = test_list()

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