Python Λειτουργίες λάμδα με ΠΑΡΑΔΕΙΓΜΑΤΑ

⚡ Έξυπνη Σύνοψη

Λάμδα λειτουργίες σε Python είναι μικρές ανώνυμες συναρτήσεις που ορίζονται με τη λέξη-κλειδί lambda αντί για def. Διατηρούν μία μόνο έκφραση, δέχονται οποιονδήποτε αριθμό ορισμάτων και συχνά διαβιβάζονται απευθείας σε ενσωματωμένες συναρτήσεις όπως map(), filter() και sorted().

  • 🔑 Λέξη-κλειδί Λάμδα: Ένα λάμδα γράφεται ως ορίσματα λάμδα: έκφραση, χωρίς def, χωρίς όνομα και χωρίς ρητή εντολή return.
  • 🧮 Μοναδική έκφραση: Το σώμα περιέχει ακριβώς μία έκφραση της οποίας η τιμή επιστρέφεται αυτόματα, επομένως δεν επιτρέπονται εντολές και πολλαπλές γραμμές.
  • 🔗 Ενσωματωμένη αντιστοίχιση: Τα λάμδα συνήθως διαβιβάζονται στις συναρτήσεις map(), filter(), reduce() και sorted() για να μετασχηματίσουν ή να επιλέξουν στοιχεία σε μια ακολουθία.
  • IIFE: Ένα λάμδα μπορεί να οριστεί και να κληθεί αμέσως χρησιμοποιώντας το μοτίβο (λάμδα x: x + x)(2), επιστρέφοντας ένα αποτέλεσμα ταυτόχρονα.
  • Έναντι ορισμού: Οι κανονικές συναρτήσεις χρειάζονται ένα όνομα και μπορούν να περιέχουν πολλές εντολές, ενώ οι λάμδα ανταλλάσσουν αυτή την ισχύ για μια συμπαγή, μονογραμμική σύνταξη.
  • 🤖 Βοήθεια AI: Οι βοηθοί τεχνητής νοημοσύνης, όπως το GitHub Copilot, δημιουργούν εκφράσεις λάμδα για πλήκτρα χαρτογράφησης, φιλτραρίσματος και ταξινόμησης από μια σύντομη προτροπή.

Python Λειτουργίες Lambda

Σε τι είναι η λειτουργία λάμδα Python?

A Λειτουργία λάμδα σε Python Ο προγραμματισμός είναι μια ανώνυμη συνάρτηση ή μια συνάρτηση που δεν έχει όνομα. Είναι μια μικρή και περιορισμένη συνάρτηση που δεν έχει περισσότερες από μία γραμμές. Ακριβώς όπως μια κανονική συνάρτηση, μια συνάρτηση λάμδα μπορεί να έχει πολλαπλά ορίσματα με μία έκφραση.

In Python, εκφράσεις λάμδα (ή μορφές λάμδα) χρησιμοποιούνται για την κατασκευή ανώνυμων συναρτήσεων. Για να το κάνετε αυτό, θα χρησιμοποιήσετε το λάμδα λέξη-κλειδί (όπως ακριβώς χρησιμοποιείτε def για τον ορισμό κανονικών συναρτήσεων). Σε κάθε ανώνυμη συνάρτηση που ορίζετε Python θα έχει 3 βασικά μέρη:

  • Η λέξη-κλειδί λάμδα.
  • Οι παράμετροι (ή δεσμευμένες μεταβλητές) και
  • Το σώμα της λειτουργίας.

Μια συνάρτηση λάμδα μπορεί να έχει οποιονδήποτε αριθμό παραμέτρων, αλλά το σώμα της συνάρτησης μπορεί να περιέχει μόνο ένας έκφραση. Επιπλέον, ένα λάμδα γράφεται σε μία γραμμή κώδικα και μπορεί επίσης να κληθεί αμέσως. Όλα αυτά θα τα δείτε στην πράξη στα επόμενα παραδείγματα.

Σύνταξη και Παραδείγματα

Η επίσημη σύνταξη για τη σύνταξη μιας συνάρτησης λάμδα είναι όπως δίνεται παρακάτω:

lambda p1, p2: expression

Εδώ, τα p1 και p2 είναι οι παράμετροι που μεταβιβάζονται στη συνάρτηση λάμδα. Μπορείτε να προσθέσετε όσες ή λίγες παραμέτρους χρειάζεστε.

Ωστόσο, παρατηρήστε ότι δεν χρησιμοποιούμε αγκύλες γύρω από τις παραμέτρους όπως κάνουμε με τις κανονικές συναρτήσεις. Το τελευταίο μέρος (παράσταση) είναι οποιαδήποτε έγκυρη Python παράσταση που λειτουργεί με βάση τις παραμέτρους που παρέχετε στη συνάρτηση.

Παράδειγμα 1

Τώρα που ξέρετε για τα λάμδα, ας το δοκιμάσουμε με ένα παράδειγμα. Άνοιξε λοιπόν IDLE και πληκτρολογήστε τα εξής:

adder = lambda x, y: x + y
print (adder (1, 2))

Code εξήγηση

Εδώ, ορίζουμε μια μεταβλητή που θα κρατά το αποτέλεσμα που επιστρέφεται από τη συνάρτηση λάμδα.

1. Η λέξη-κλειδί λάμδα που χρησιμοποιείται για τον ορισμό μιας ανώνυμης συνάρτησης.

2. x και y είναι οι παράμετροι που περνάμε στη συνάρτηση λάμδα.

3. Αυτό είναι το σώμα της συνάρτησης, η οποία προσθέτει τις 2 παραμέτρους που περάσαμε. Παρατηρήστε ότι είναι μια ενιαία έκφραση. Δεν μπορείτε να γράψετε πολλές εντολές στο σώμα μιας συνάρτησης λάμδα.

4. Καλούμε τη συνάρτηση και εκτυπώνουμε την επιστρεφόμενη τιμή.

Παράδειγμα 2

Αυτό ήταν ένα βασικό παράδειγμα για να κατανοήσουμε τα βασικά και τη σύνταξη του λάμδα. Ας προσπαθήσουμε τώρα να εκτυπώσουμε ένα λάμδα και να δούμε το αποτέλεσμα. Ανοίξτε ξανά το IDLE και πληκτρολογήστε τα εξής:

#What a lambda returns
string='some kind of a useless lambda'
print(lambda string : print(string))

Τώρα αποθηκεύστε το αρχείο σας και πατήστε F5 για να εκτελέσετε το πρόγραμμα. Αυτή είναι η έξοδος που πρέπει να πάρετε.

Παραγωγή:

<function <lambda> at 0x00000185C3BF81E0>

Τι συμβαίνει εδώ; Ας δούμε τον κώδικα για να καταλάβουμε καλύτερα.

Code Επεξήγηση:

1. Εδώ, ορίζουμε ένα κορδόνι που θα περάσετε ως παράμετρο στο λάμδα.

2. Δηλώνουμε ένα λάμδα που καλεί μια εντολή print και τυπώνει το αποτέλεσμα.

Αλλά γιατί το πρόγραμμα δεν εκτυπώνει τη συμβολοσειρά που περνάμε; Αυτό συμβαίνει επειδή η ίδια η συνάρτηση λάμδα επιστρέφει ένα αντικείμενο συνάρτησης. Σε αυτό το παράδειγμα, η συνάρτηση λάμδα δεν εκτυπώνεται. που ονομάζεται από τη συνάρτηση εκτύπωσης αλλά είναι απλώς επιστροφή το αντικείμενο συνάρτησης και τη θέση μνήμης όπου αποθηκεύεται. Αυτό εκτυπώνεται στην κονσόλα.

Παράδειγμα 3

Ωστόσο, εάν γράψετε ένα πρόγραμμα όπως αυτό:

#What a lambda returns #2
x="some kind of a useless lambda"
(lambda x : print(x))(x)

Και εκτελέστε το πατώντας F5, θα δείτε μια έξοδο σαν αυτή.

Παραγωγή:

some kind of a useless lambda

Τώρα, καλείται το λάμδα και η συμβολοσειρά που περνάμε εκτυπώνεται στην κονσόλα. Αλλά ποια είναι αυτή η περίεργη σύνταξη και γιατί ο ορισμός του λάμδα καλύπτεται σε παρενθέσεις; Ας το καταλάβουμε τώρα.

Code Επεξήγηση:

1. Εδώ είναι η ίδια συμβολοσειρά που ορίσαμε στο προηγούμενο παράδειγμα.

2. Σε αυτό το μέρος, ορίζουμε ένα λάμδα και το καλούμε αμέσως περνώντας τη συμβολοσειρά ως όρισμα. Αυτό ονομάζεται IIFE και θα μάθετε περισσότερα σχετικά με αυτό στις επόμενες ενότητες αυτού του σεμιναρίου.

Παράδειγμα 4

Ας δούμε ένα τελευταίο παράδειγμα για να κατανοήσουμε πώς εκτελούνται οι λάμδα και οι κανονικές συναρτήσεις. Ανοίξτε λοιπόν το IDLE και σε νέο αρχείο πληκτρολογήστε τα εξής:

#A REGULAR FUNCTION
def guru( funct, *args ):
funct( *args )
def printer_one( arg ):
return print (arg)
def printer_two( arg ):
print(arg)
#CALL A REGULAR FUNCTION 
guru( printer_one, 'printer 1 REGULAR CALL' )
guru( printer_two, 'printer 2 REGULAR CALL \n' )
#CALL A REGULAR FUNCTION THRU A LAMBDA
guru(lambda: printer_one('printer 1 LAMBDA CALL'))
guru(lambda: printer_two('printer 2 LAMBDA CALL'))

Τώρα, αποθηκεύστε το αρχείο και πατήστε F5 για να εκτελέσετε το πρόγραμμα. Εάν δεν κάνατε λάθη, το αποτέλεσμα θα πρέπει να είναι κάπως έτσι.

Παραγωγή:

printer 1 REGULAR CALL

printer 2 REGULAR CALL

printer 1 LAMBDA CALL

printer 2 LAMBDA CALL

Code Επεξήγηση:

1. Μια συνάρτηση που ονομάζεται guru και δέχεται μια άλλη συνάρτηση ως πρώτη παράμετρο και τυχόν άλλα ορίσματα που την ακολουθούν.

2. Η συνάρτηση printer_one είναι μια απλή συνάρτηση που εκτυπώνει την παράμετρο που της διαβιβάζεται και την επιστρέφει.

3. Η συνάρτηση printer_two είναι παρόμοια με την συνάρτηση printer_one αλλά χωρίς την εντολή return.

4. Σε αυτό το μέρος, καλούμε τη συνάρτηση guru και μεταβιβάζουμε τις συναρτήσεις εκτυπωτή και μια συμβολοσειρά ως παραμέτρους.

5. Αυτή είναι η σύνταξη για την επίτευξη του τέταρτου βήματος (δηλαδή, κλήση της συνάρτησης guru) αλλά χρησιμοποιώντας λάμδα.

Στην επόμενη ενότητα, θα μάθετε πώς να χρησιμοποιείτε τις συναρτήσεις λάμδα με χάρτης(), περιορίζω()και φίλτρο() in Python.

Χρησιμοποιώντας λάμδα με Python ενσωματωμένα

Οι λειτουργίες λάμδα παρέχουν έναν κομψό και ισχυρό τρόπο εκτέλεσης λειτουργιών χρησιμοποιώντας ενσωματωμένες μεθόδους Python. Είναι δυνατό επειδή το λάμδα μπορεί να κληθεί αμέσως και να περάσει ως όρισμα σε αυτές τις συναρτήσεις.

IIFE σε Python Λάμδα

IIFE σημαίνει κλήθηκε αμέσως η εκτέλεση της συνάρτησης. Αυτό σημαίνει ότι μια συνάρτηση λάμδα είναι δυνατή η κλήση μόλις οριστεί. Ας το κατανοήσουμε αυτό με ένα παράδειγμα. Ενεργοποιήστε το IDLE και πληκτρολογήστε τα εξής:

 (lambda x: x + x)(2)

Ακολουθεί η εξήγηση της εξόδου και του κώδικα:

Αυτή η δυνατότητα άμεσης κλήσης των λάμδα σάς επιτρέπει να τα χρησιμοποιείτε μέσα σε συναρτήσεις όπως map() και reduce(). Είναι χρήσιμο γιατί μπορεί να μην θέλετε να χρησιμοποιήσετε ξανά αυτές τις λειτουργίες.

λάμδα στο φίλτρο()

Η συνάρτηση φίλτρου χρησιμοποιείται για την επιλογή ορισμένων συγκεκριμένων στοιχείων από μια ακολουθία στοιχείων. Η ακολουθία μπορεί να είναι οποιοσδήποτε επαναλήπτης όπως λίστες, σύνολα, πλειάδες κ.λπ.

Τα στοιχεία που θα επιλεγούν βασίζονται σε κάποιον προκαθορισμένο περιορισμό. Λαμβάνει 2 παραμέτρους:

  • Μια συνάρτηση που ορίζει τον περιορισμό φιλτραρίσματος
  • Μια ακολουθία (οποιοσδήποτε επαναλήπτης όπως λίστες, πλειάδες κ.λπ.)

Για παράδειγμα,

sequences = [10,2,8,7,5,4,3,11,0, 1]
filtered_result = filter (lambda x: x > 4, sequences) 
print(list(filtered_result))

Εδώ είναι η έξοδος:

[10, 8, 7, 5, 11]

Code Επεξήγηση:

1. Στην πρώτη πρόταση, ορίζουμε μια λίστα που ονομάζεται ακολουθίες που περιέχει ορισμένους αριθμούς.

2. Εδώ, δηλώνουμε μια μεταβλητή που ονομάζεται filtered_result, η οποία θα αποθηκεύει τις φιλτραρισμένες τιμές που επιστρέφονται από τη συνάρτηση filter().

3. Μια συνάρτηση λάμδα που εκτελείται σε κάθε στοιχείο της λίστας και επιστρέφει true αν είναι μεγαλύτερο από 4.

4. Εκτυπώστε το αποτέλεσμα που επιστρέφεται από τη λειτουργία φίλτρου.

lambdas στον χάρτη()

Η συνάρτηση map χρησιμοποιείται για την εφαρμογή μιας συγκεκριμένης λειτουργίας σε κάθε στοιχείο μιας ακολουθίας. Όπως και η συνάρτηση filter(), λαμβάνει επίσης 2 παραμέτρους:

  1. Μια συνάρτηση που ορίζει την πράξη που θα εκτελεστεί στα στοιχεία
  2. Μία ή περισσότερες ακολουθίες

Για παράδειγμα, εδώ είναι ένα πρόγραμμα που εκτυπώνει τα τετράγωνα των αριθμών σε μια δεδομένη λίστα:

sequences = [10,2,8,7,5,4,3,11,0, 1]
filtered_result = map (lambda x: x*x, sequences) 
print(list(filtered_result))

Παραγωγή:

 [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]

Code Επεξήγηση:

1. Εδώ, ορίζουμε μια λίστα που ονομάζεται ακολουθίες και η οποία περιέχει ορισμένους αριθμούς.

2. Δηλώνουμε μια μεταβλητή που ονομάζεται filtered_result η οποία θα αποθηκεύει τις αντιστοιχισμένες τιμές.

3. Μια συνάρτηση λάμδα που εκτελείται σε κάθε στοιχείο της λίστας και επιστρέφει το τετράγωνο αυτού του αριθμού.

4. Εκτυπώστε το αποτέλεσμα που επιστρέφεται από τη συνάρτηση map.

λάμδα σε μείωση()

Η συνάρτηση μείωσης, όπως η map(), χρησιμοποιείται για την εφαρμογή μιας πράξης σε κάθε στοιχείο μιας ακολουθίας. Ωστόσο, διαφέρει από τον χάρτη ως προς τη λειτουργία του. Αυτά είναι τα βήματα που ακολουθούνται από τη συνάρτηση reduce() για τον υπολογισμό μιας εξόδου:

Βήμα 1) Εκτελέστε την καθορισμένη λειτουργία στα 2 πρώτα στοιχεία της ακολουθίας.

Βήμα 2) Αποθηκεύστε αυτό το αποτέλεσμα.

Βήμα 3) Εκτελέστε τη λειτουργία με το αποθηκευμένο αποτέλεσμα και το επόμενο στοιχείο της σειράς.

Βήμα 4) Επαναλάβετε μέχρι να μην μείνουν άλλα στοιχεία.

Χρειάζεται επίσης δύο παραμέτρους:

  1. Μια συνάρτηση που καθορίζει τη λειτουργία που πρέπει να εκτελεστεί
  2. Μια ακολουθία (οποιοσδήποτε επαναλήπτης όπως λίστες, πλειάδες κ.λπ.)

Για παράδειγμα, εδώ είναι ένα πρόγραμμα που επιστρέφει το γινόμενο όλων των στοιχείων σε μια λίστα:

from functools import reduce
sequences = [1,2,3,4,5]
product = reduce (lambda x, y: x*y, sequences)
print(product)

Εδώ είναι η έξοδος:

120

Code Επεξήγηση:

1. Εισαγωγή reduce από την ενότητα functools.

2. Εδώ, ορίζουμε μια λίστα που ονομάζεται ακολουθίες και η οποία περιέχει ορισμένους αριθμούς.

3. Δηλώνουμε μια μεταβλητή που ονομάζεται product η οποία θα αποθηκεύει την μειωμένη τιμή.

4. Μια συνάρτηση λάμδα που εκτελείται σε κάθε στοιχείο της λίστας. Θα επιστρέψει το γινόμενο αυτού του αριθμού σύμφωνα με το προηγούμενο αποτέλεσμα.

5. Εκτυπώστε το αποτέλεσμα που επιστρέφεται από τη συνάρτηση reduce.

Γιατί (και γιατί όχι) να χρησιμοποιείτε συναρτήσεις λάμδα;

Όπως θα δείτε στην επόμενη ενότητα, τα λάμδα αντιμετωπίζονται το ίδιο με τις κανονικές συναρτήσεις σε επίπεδο διερμηνέα. Κατά κάποιο τρόπο, θα μπορούσατε να πείτε ότι τα λάμδα παρέχουν συμπαγή σύνταξη για τη γραφή συναρτήσεων που επιστρέφουν μια μεμονωμένη έκφραση.

Ωστόσο, θα πρέπει να γνωρίζετε πότε είναι καλή ιδέα να χρησιμοποιείτε λάμδα και πότε να τα αποφεύγετε. Σε αυτήν την ενότητα, θα μάθετε μερικές από τις αρχές σχεδιασμού που χρησιμοποιούνται από Python προγραμματιστές κατά τη σύνταξη λάμδα.

Μία από τις πιο συνηθισμένες περιπτώσεις χρήσης για τα λάμδα είναι στον συναρτησιακό προγραμματισμό, όπως Python υποστηρίζει ένα παράδειγμα (ή στυλ) προγραμματισμού γνωστό ως λειτουργικός προγραμματισμός.

Σας επιτρέπει να παρέχετε μια συνάρτηση ως παράμετρο σε μια άλλη συνάρτηση (για παράδειγμα, σε χάρτη, φίλτρο κ.λπ.). Σε τέτοιες περιπτώσεις, η χρήση λάμδα προσφέρει έναν κομψό τρόπο για να δημιουργήσετε μια συνάρτηση μίας χρήσης και να τη μεταβιβάσετε ως παράμετρο.

Πότε δεν πρέπει να χρησιμοποιείτε το Lambda;

Δεν πρέπει ποτέ να γράφετε περίπλοκες συναρτήσεις λάμδα σε περιβάλλον παραγωγής. Θα είναι πολύ δύσκολο για τους κωδικοποιητές που διατηρούν τον κωδικό σας να τον αποκρυπτογραφήσουν. Εάν βρείτε τον εαυτό σας να δημιουργεί περίπλοκες εκφράσεις μιας γραμμής, θα ήταν πολύ ανώτερη πρακτική να ορίσετε μια σωστή συνάρτηση. Ως βέλτιστη πρακτική, πρέπει να θυμάστε ότι ο απλός κώδικας είναι πάντα καλύτερος από τον σύνθετο κώδικα.

Λάμδα έναντι κανονικών συναρτήσεων

Όπως αναφέρθηκε προηγουμένως, οι λάμδα είναι απλώς συναρτήσεις που δεν έχουν συνδεδεμένο αναγνωριστικό. Με απλά λόγια, είναι συναρτήσεις χωρίς ονόματα (επομένως, ανώνυμες). Ακολουθεί ένας πίνακας που δείχνει τη διαφορά μεταξύ των λάμδα και των κανονικών συναρτήσεων στο Python.

Λάμδας Κανονικές Λειτουργίες
Σύνταξη:

lambda x : x + x
Σύνταξη:

def (x) :
return x + x 
Οι συναρτήσεις λάμδα μπορούν να έχουν μόνο μία έκφραση στο σώμα τους. Οι κανονικές συναρτήσεις μπορούν να έχουν πολλαπλές εκφράσεις και δηλώσεις στο σώμα τους.
Οι συναρτήσεις Lambda δεν έχουν κάποιο όνομα που να σχετίζεται με αυτές. Γι' αυτό είναι επίσης γνωστές ως ανώνυμες συναρτήσεις. Οι κανονικές λειτουργίες πρέπει να έχουν όνομα και υπογραφή.
Τα λάμδα δεν περιέχουν δήλωση επιστροφής επειδή το σώμα επιστρέφεται αυτόματα. Οι συναρτήσεις που πρέπει να επιστρέψουν μια τιμή θα πρέπει να περιλαμβάνουν μια εντολή return.

Εξήγηση των διαφορών

Η κύρια διαφορά μεταξύ μιας λάμδα και μιας κανονικής συνάρτησης είναι ότι η συνάρτηση λάμδα αξιολογεί μόνο μια έκφραση και αποδίδει ένα αντικείμενο συνάρτησης. Κατά συνέπεια, μπορούμε να ονομάσουμε το αποτέλεσμα της συνάρτησης λάμδα και να το χρησιμοποιήσουμε στο πρόγραμμά μας όπως κάναμε στο προηγούμενο παράδειγμα.

Μια κανονική συνάρτηση για το παραπάνω παράδειγμα θα μοιάζει με αυτό:

def adder (x, y):
return x + y 
print (adder (1, 2))

Εδώ, πρέπει να ορίσουμε α όνομα για τη συνάρτηση που Επιστροφές το αποτέλεσμα όταν εμείς κλήση Αυτό. Μια συνάρτηση λάμδα δεν περιέχει εντολή return επειδή θα έχει μόνο μία έκφραση η οποία επιστρέφεται πάντα από προεπιλογή. Δεν χρειάζεται καν να αντιστοιχίσετε μια συνάρτηση λάμδα, καθώς μπορεί να κληθεί αμέσως (δείτε την προηγούμενη ενότητα). Όπως θα δείτε, οι συναρτήσεις λάμδα γίνονται ιδιαίτερα ισχυρές όταν τις χρησιμοποιούμε με Pythonτις ενσωματωμένες λειτουργίες του.

Ωστόσο, ίσως εξακολουθείτε να αναρωτιέστε πώς διαφέρουν τα λάμδα από μια συνάρτηση που επιστρέφει μια μεμονωμένη έκφραση (όπως η παραπάνω). Σε επίπεδο διερμηνέα, δεν υπάρχει μεγάλη διαφορά. Μπορεί να ακούγεται περίεργο, αλλά οποιαδήποτε συνάρτηση λάμδα στην οποία ορίζετε Python αντιμετωπίζεται ως κανονική λειτουργία από τον διερμηνέα.

Σε επίπεδο bytecode, οι δύο ορισμοί αντιμετωπίζονται με τον ίδιο τρόπο από το Python διερμηνέας. Τώρα, δεν μπορείτε να ονομάσετε μια συνάρτηση λάμδα επειδή είναι δεσμευμένο από Python, αλλά οποιοδήποτε άλλο όνομα συνάρτησης θα αποδώσει τον ίδιο bytecode.

Συχνές Ερωτήσεις

Ναι. Ένα λάμδα μπορεί να χρησιμοποιήσει μια υπό συνθήκη έκφραση όπως το λάμδα x: 'even' if x % 2 == 0 else 'odd'. Δεν μπορεί να περιέχει μια πλήρη εντολή if, επειδή το σώμα ενός λάμδα πρέπει να είναι μια ενιαία έκφραση και όχι ένα μπλοκ από εντολές.

Γενικά όχι. Το PEP 8 συνιστά τη χρήση του def όταν μια συνάρτηση χρειάζεται ένα όνομα, επειδή η σύνδεση ενός λάμδα με μια μεταβλητή της δίνει ένα όνομα αλλά χάνει την καθαρότητα. traceback που παρέχει το def. Τα Lambda είναι καλύτερο να περνούν απευθείας σε συναρτήσεις όπως sorted(), map() ή filter().

Όχι. Σε επίπεδο bytecode Python αντιμετωπίζει ένα λάμδα και ένα ισοδύναμο def με τον ίδιο τρόπο, επομένως δεν υπάρχει πλεονέκτημα ταχύτητας. Ένα λάμδα αποθηκεύει μόνο μια γραμμή κώδικα. Δεν εκτελείται πιο γρήγορα από μια επώνυμη συνάρτηση που κάνει την ίδια δουλειά.

Ναι. Ένα λάμδα μπορεί να διαβάσει μεταβλητές από το περικλείον πεδίο εφαρμογής, σχηματίζοντας ένα κλείσιμο. Μέσα σε έναν βρόχο, να είστε προσεκτικοί: το λάμδα καταγράφει την ίδια την μεταβλητή, όχι την τρέχουσα τιμή της, επομένως χρησιμοποιήστε ένα προεπιλεγμένο όρισμα όπως το λάμδα x, n=n: x + n για να το παγώσετε.

Μεταβιβάστε ένα λάμδα ως βασικό όρισμα στην sorted() ή list.sort(). Για παράδειγμα, η sorted(users, key=lambda u: u['age']) ταξινομεί τα στοιχεία κατά ηλικία. Το λάμδα λέει Python ποια τιμή θα συγκριθεί για κάθε στοιχείο, παρέχοντας συνοπτική προσαρμοσμένη ταξινόμηση χωρίς ξεχωριστή ονομασμένη συνάρτηση.

Όχι άμεσα, επειδή ένα ανώνυμο λάμδα δεν έχει όνομα για αναφορά. Μπορείτε να το παρακάμψετε αυτό αντιστοιχίζοντας το λάμδα σε μια μεταβλητή και καλώντας αυτό το όνομα, αλλά μια κανονική συνάρτηση ορισμού είναι η σαφέστερη και συνιστώμενη επιλογή για αναδρομή.

Τα Lambda τροφοδοτούν γρήγορους, ενσωματωμένους μετασχηματισμούς σε κώδικα τεχνητής νοημοσύνης και μηχανικής μάθησης. Οι επιστήμονες δεδομένων τα μεταβιβάζουν στα pandas .apply(), map() και filter() για τον καθαρισμό ή την αναδιαμόρφωση δεδομένων, και ως βασικές συναρτήσεις για την ταξινόμηση χαρακτηριστικών, kee.ping συμπύκνωμα προεπεξεργασίας μέσα σε μεγαλύτερους αγωγούς εκπαίδευσης.

Το GitHub Copilot προτείνει πλήρεις εκφράσεις λάμδα από ένα σύντομο σχόλιο ή τον περιβάλλοντα κώδικα, συμπεριλαμβανομένων των σωστών παραμέτρων και εκφράσεων για κλήσεις map(), filter() ή sorted(). Μπορεί επίσης να προτείνει τη μετατροπή ενός λεπτομερούς λάμδα σε μια πιο σαφή επώνυμη συνάρτηση όταν η αναγνωσιμότητα έχει σημασία.

Συνοψίστε αυτήν την ανάρτηση με: