Στη C, η επιστροφή πολλαπλών τιμών επιστροφής από μια συνάρτηση είναι αρκετά κουραστική, αλλά στην Python, είναι πολύ εύκολο να γίνει.
Επιστροφή διαχωρισμένη με κόμματα
Στην Python, μπορείτε απλώς να επιστρέψετε μια λίστα συμβολοσειρών ή αριθμών διαχωρισμένων με κόμμα.
Για παράδειγμα, ορίστε μια συνάρτηση που επιστρέφει μόνο μια συμβολοσειρά και έναν αριθμό, όπως φαίνεται παρακάτω, με το καθένα χωρισμένο με κόμμα μετά την επιστροφή.
def test(): return 'abc', 100
Στην Python, οι τιμές που διαχωρίζονται με κόμμα θεωρούνται πλειάδες χωρίς παρενθέσεις, εκτός από τις περιπτώσεις που είναι συντακτικά απαραίτητες. Επομένως, η συνάρτηση στο παραπάνω παράδειγμα θα επιστρέψει μια πλειάδα με κάθε τιμή ως στοιχείο.
Το κόμμα είναι αυτό που δημιουργεί την πλειάδα, όχι οι στρογγυλές αγκύλες. Οι στρογγυλές αγκύλες μπορούν να παραλείπονται, εκτός από την περίπτωση κενών πλειάδων ή όταν είναι απαραίτητο για την αποφυγή συντακτικής ασάφειας.
Built-in Types — Python 3.10.0 Documentation
Ο τύπος της τιμής επιστροφής είναι μια πλειάδα.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Κάθε στοιχείο θα είναι του τύπου που ορίζεται από τη συνάρτηση.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Σφάλμα εάν καθορίσετε έναν δείκτη που υπερβαίνει τον αριθμό των τιμών επιστροφής που ορίσατε.
# print(result[2]) # IndexError: tuple index out of range
Μπορεί να αποσυμπιεστεί και πολλαπλές τιμές επιστροφής μπορούν να ανατεθούν σε ξεχωριστές μεταβλητές.
a, b = test() print(a) # abc print(b) # 100
Το ίδιο ισχύει και αν θέλετε να καθορίσετε τρεις ή περισσότερες τιμές επιστροφής αντί για δύο.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Επιστρέφει μια λίστα.
[]
Αν την περικλείσετε με αυτό, η τιμή επιστροφής θα είναι μια λίστα αντί για μια πλειάδα.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>