I C er det ret besværligt at returnere flere returværdier fra en funktion, men i Python er det meget let at gøre.
Returnering adskilt med kommaer
I Python kan du blot returnere en kommasepareret liste af strenge eller tal.
Som et eksempel kan du definere en funktion, der kun returnerer en streng og et tal som vist nedenfor, med hvert af dem adskilt med et komma efter returneringen.
def test(): return 'abc', 100
I Python betragtes kommaseparerede værdier som tupler uden parenteser, undtagen hvor det er syntaktisk nødvendigt. Derfor vil funktionen i eksemplet ovenfor returnere en tupel med hver værdi som et element.
Det er kommaet, der skaber tuplen, ikke de runde parenteser. Runde parenteser kan udelades, undtagen i tilfælde af tomme tupler eller når det er nødvendigt for at undgå syntaktisk tvetydighed.
Built-in Types — Python 3.10.0 Documentation
Typen af returværdien er en tupel.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Hvert element vil være af den type, der er defineret af funktionen.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Fejl, hvis du angiver et indeks, der overstiger det antal returværdier, du har defineret.
# print(result[2]) # IndexError: tuple index out of range
Den kan pakkes ud, og flere returværdier kan tildeles til separate variabler.
a, b = test() print(a) # abc print(b) # 100
Det samme gælder, hvis du ønsker at angive tre eller flere returværdier i stedet for kun to.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Returnerer en liste.
[]
Hvis du omslutter den med dette, vil den returnerede værdi være en liste i stedet for en tupel.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>