Ένας αρχάριος οδηγός για την κατανόηση των λειτουργιών Python Lambda

Ένας αρχάριος οδηγός για την κατανόηση των λειτουργιών Python Lambda

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





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





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





Τι είναι το Lambda στην Python;

Το λάμδα είναι απλά ένας τρόπος για να ορίσετε μια συνάρτηση στην Python. Μερικές φορές είναι γνωστές ως «χειριστές λάμδα» ή «λειτουργίες λάμδα».

Εάν έχετε χρησιμοποιήσει Python στο παρελθόν, πιθανότατα έχετε ορίσει τις λειτουργίες σας χρησιμοποιώντας το def λέξη -κλειδί, και σας έχει δουλέψει καλά μέχρι τώρα. Γιατί λοιπόν υπάρχει άλλος τρόπος να κάνουμε το ίδιο πράγμα;



Η διαφορά είναι ότι οι λειτουργίες λάμδα είναι ανώνυμες. Δηλαδή, είναι συναρτήσεις που δεν χρειάζεται να ονομάζονται. Χρησιμοποιούνται για τη δημιουργία μικρών, εφάπαξ λειτουργιών σε περιπτώσεις όπου μια «πραγματική» συνάρτηση θα ήταν πολύ μεγάλη και ογκώδης.

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





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

Πώς να χρησιμοποιήσετε το Lambdas στην Python

Πριν εξετάσουμε μια συνάρτηση λάμδα, ας δούμε μια εξαιρετικά βασική συνάρτηση που ορίζεται με τον «παραδοσιακό» τρόπο:





def add_five(number):
return number + 5

print(add_five(number=4))

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

Δείτε πώς φαίνεται ως λειτουργία λάμδα:

add_five = lambda number: number + 5

print(add_five(number=4))

Αντί για χρήση def , η λέξη λάμδα χρησιμοποιείται. Δεν απαιτούνται αγκύλες, αλλά τυχόν λέξεις που ακολουθούν λάμδα η λέξη -κλειδί δημιουργείται ως παράμετρος. Το κόλον χρησιμοποιείται για τον διαχωρισμό των παραμέτρων και της έκφρασης. Σε αυτή την περίπτωση, η έκφραση είναι αριθμός + 5 Το

Δεν χρειάζεται να χρησιμοποιήσετε το ΕΠΙΣΤΡΟΦΗ λέξη-κλειδί --- το λάμδα το κάνει αυτό για σας αυτόματα.

Δείτε πώς μπορείτε να δημιουργήσετε μια συνάρτηση λάμδα με δύο ορίσματα:

διαφορά μεταξύ οθόνης και τηλεόρασης
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

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

Python Lambdas με χάρτη, φίλτρο και μείωση

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

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

Δείτε πώς μπορείτε να χρησιμοποιήσετε τον χάρτη χωρίς λάμδα:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Αυτή η λειτουργία χάρτη είναι αρκετά βολική, αλλά θα μπορούσε να είναι καλύτερη. ο add_five η συνάρτηση μεταφέρεται ως όρισμα, αλλά τι γίνεται αν δεν θέλετε να δημιουργείτε μια συνάρτηση κάθε φορά που χρησιμοποιείτε το χάρτη; Μπορείτε να χρησιμοποιήσετε λάμδα αντ 'αυτού!

Δείτε πώς φαίνεται ο ίδιος κώδικας, μόνο με τη λειτουργία που αντικαθίσταται από λάμδα:

μπορεί κάποιος να μου στείλει μήνυμα στο facebook όταν την απενεργοποιήσω
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Όπως μπορείτε να δείτε, το σύνολο add_five η λειτουργία δεν απαιτείται πλέον. Αντ 'αυτού, η λειτουργία λάμδα χρησιμοποιείται για να διατηρεί τα πράγματα καθαρά.

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

Πρώτον, χωρίς λάμδα:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Δεν υπάρχει τίποτα κακό με αυτόν τον κώδικα, αλλά μακρύνει λίγο. Ας δούμε πόσες γραμμές μπορεί να αφαιρέσει μια λάμδα:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

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

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

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Αυτό το παράδειγμα χρειάζεται εισαγωγή περιορίζω από το functools ενότητα, αλλά μην ανησυχείτε, η λειτουργική μονάδα functools είναι μέρος της βασικής βιβλιοθήκης Python.

Η ιστορία είναι πολύ η ίδια με το λάμδα, δεν χρειάζεται λειτουργία:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Πράγματα που πρέπει να προσέξετε με τον Python Lambdas

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

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

Για περισσότερες συμβουλές, ελέγξτε το δικό μας οδηγός για αντικειμενοστραφή προγραμματισμό σε Python και ανατρέξτε στον οδηγό Συχνών Ερωτήσεων για αρχάριους Python.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ 3 τρόποι για να ελέγξετε αν ένα email είναι πραγματικό ή ψεύτικο

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

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Πύθων
  • Φροντιστήρια κωδικοποίησης
Σχετικά με τον Συγγραφέα Τζο Κόμπερν(136 δημοσιευμένα άρθρα)

Ο Joe είναι απόφοιτος της Επιστήμης των Υπολογιστών από το Πανεπιστήμιο του Lincoln, Ηνωμένο Βασίλειο. Είναι επαγγελματίας προγραμματιστής λογισμικού και όταν δεν πετάει με drones ή δεν γράφει μουσική, μπορεί συχνά να βρεθεί να βγάζει φωτογραφίες ή να παράγει βίντεο.

Περισσότερα από τον Joe Coburn

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή