I C är det ganska omständligt att returnera flera värden från en funktion, men i Python är det mycket lätt att göra.
Returnering separerad med kommatecken.
I Python kan du helt enkelt returnera en kommaseparerad lista med strängar eller siffror.
Som exempel kan du definiera en funktion som endast returnerar en sträng och ett tal enligt nedan, med varje funktion separerad med ett kommatecken efter returen.
def test(): return 'abc', 100
I Python betraktas kommaseparerade värden som tupler utan parenteser, utom när det är syntaktiskt nödvändigt. Därför returnerar funktionen i exemplet ovan en tupel med varje värde som ett element.
Det är kommatecknet som skapar tupeln, inte de runda parenteserna. Runda parenteser kan utelämnas, utom när det gäller tomma tupler eller när det är nödvändigt för att undvika syntaktisk tvetydighet.
Built-in Types — Python 3.10.0 Documentation
Returvärdet är en tupel.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Varje element kommer att vara av den typ som definieras av funktionen.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Fel om du anger ett index som överstiger det antal returvärden som du har definierat.
# print(result[2]) # IndexError: tuple index out of range
Den kan packas upp och flera returvärden kan tilldelas separata variabler.
a, b = test() print(a) # abc print(b) # 100
Samma sak gäller om du vill ange tre eller fler returvärden i stället för bara två.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Återger en lista.
[]
Om du omsluter den med detta kommer returvärdet att vara en lista i stället för en tupel.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>