ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ಗಳು (Lambda Functions)
ಪೈಥಾನ್ನಲ್ಲಿ, ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ (Lambda Function) ಎಂದರೆ ಒಂದು ಸಣ್ಣ, ಅನಾಮಧೇಯ (anonymous), ಇನ್ಲೈನ್ ಫಂಕ್ಷನ್. ಇದನ್ನು lambda ಕೀವರ್ಡ್ ಬಳಸಿ ಡಿಫೈನ್ ಮಾಡಲಾಗುತ್ತದೆ.
ಸಾಂಪ್ರದಾಯಿಕ def ಫಂಕ್ಷನ್ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ಗಳು:
- ಯಾವುದೇ ಹೆಸರನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ.
- ಕೇವಲ ಒಂದೇ ಒಂದು ಎಕ್ಸ್ಪ್ರೆಶನ್ (expression) ಅನ್ನು ಹೊಂದಿರಬಹುದು.
- ಈ ಎಕ್ಸ್ಪ್ರೆಶನ್ನ ಫಲಿತಾಂಶವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತವೆ.
ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಸಿಂಟ್ಯಾಕ್ಸ್
-lambda: ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಅನ್ನು ಡಿಫೈನ್ ಮಾಡುವ ಕೀವರ್ಡ್.
- arguments: ಫಂಕ್ಷನ್ಗೆ ನೀಡಲಾಗುವ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳು (ಅನೇಕ ಇರಬಹುದು).
- expression: ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಬಳಸಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ಒಂದೇ ಒಂದು ಎಕ್ಸ್ಪ್ರೆಶನ್.
ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಅನ್ನು ಏಕೆ ಮತ್ತು ಎಲ್ಲಿ ಬಳಸಬೇಕು?
ಸಣ್ಣ, ಒಂದು-ಬಾರಿಯ (one-time use) ಫಂಕ್ಷನ್ಗಳು ಬೇಕಾದಾಗ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ಗಳು ಅತ್ಯಂತ ಉಪಯುಕ್ತ. ಇವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ filter(), map(), ಮತ್ತು sorted() ನಂತಹ ಹೈಯರ್-ಆರ್ಡರ್ ಫಂಕ್ಷನ್ಗಳೊಂದಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ 1: ಮೂಲಭೂತ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್
ಸಾಂಪ್ರದಾಯಿಕ ಫಂಕ್ಷನ್:
ಅದೇ ಫಂಕ್ಷನ್ ಅನ್ನು ಲ್ಯಾಂಬ್ಡಾ ಬಳಸಿ:
ಉದಾಹರಣೆ 2: map() ನೊಂದಿಗೆ ಬಳಕೆ
map() ಫಂಕ್ಷನ್ ಒಂದು ಸೀಕ್ವೆನ್ಸ್ನ ಪ್ರತಿಯೊಂದು ಐಟಂಗೆ ನಿರ್ದಿಷ್ಟ ಫಂಕ್ಷನ್ ಅನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.
numbers = [1, 2, 3, 4, 5]
# ಪ್ರತಿ ಸಂಖ್ಯೆಯ ವರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಲ್ಯಾಂಬ್ಡಾ ಬಳಸುವುದು
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers) # Output: [1, 4, 9, 16, 25]
ಉದಾಹರಣೆ 3: filter() ನೊಂದಿಗೆ ಬಳಕೆ
filter() ಫಂಕ್ಷನ್ ಒಂದು ಸೀಕ್ವೆನ್ಸ್ನಿಂದ, ಫಂಕ್ಷನ್ True ಹಿಂತಿರುಗಿಸುವ ಐಟಂಗಳನ್ನು ಮಾತ್ರ ಫಿಲ್ಟರ್ ಮಾಡುತ್ತದೆ.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# ಸಮ ಸಂಖ್ಯೆಗಳನ್ನು (even numbers) ಫಿಲ್ಟರ್ ಮಾಡಲು ಲ್ಯಾಂಬ್ಡಾ ಬಳಸುವುದು
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # Output: [2, 4, 6, 8, 10]
ಉದಾಹರಣೆ 4: sorted() ನೊಂದಿಗೆ ಬಳಕೆ
sorted() ಫಂಕ್ಷನ್ನ key ಆರ್ಗ್ಯುಮೆಂಟ್ಗೆ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ನೀಡಿ ಕಸ್ಟಮ್ ಸಾರ್ಟಿಂಗ್ ಮಾಡಬಹುದು.
# ಡಿಕ್ಷನರಿಗಳ ಲಿಸ್ಟ್
people = [
{'name': 'ರವಿಕಿರಣ', 'age': 30},
{'name': 'ನಿಶ್ಕಲಾ', 'age': 28},
{'name': 'ಗೋವರ್ಧನ್', 'age': 45}
]
# ವಯಸ್ಸಿನ ಆಧಾರದ ಮೇಲೆ ಸಾರ್ಟ್ ಮಾಡುವುದು
sorted_by_age = sorted(people, key=lambda person: person['age'])
print(sorted_by_age)
ಲ್ಯಾಂಬ್ಡಾ vs. def ಫಂಕ್ಷನ್ಗಳು
| ಗುಣಲಕ್ಷಣ | ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ | def ಫಂಕ್ಷನ್ |
|---|---|---|
| ಹೆಸರು | ಅನಾಮಧೇಯ (ಹೆಸರಿಲ್ಲ) | ಹೆಸರು ಹೊಂದಿರುತ್ತದೆ |
| ಬಾಡಿ (Body) | ಒಂದೇ ಒಂದು ಎಕ್ಸ್ಪ್ರೆಶನ್ | ಅನೇಕ ಸ್ಟೇಟ್ಮೆಂಟ್ಗಳನ್ನು ಹೊಂದಿರಬಹುದು |
return |
ಎಕ್ಸ್ಪ್ರೆಶನ್ನ ಫಲಿತಾಂಶವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ | return ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಬಳಸಬೇಕು |
| ಬಳಕೆ | ಸಣ್ಣ, ಇನ್ಲೈನ್ ಕಾರ್ಯಗಳಿಗಾಗಿ | ಸಂಕೀರ್ಣ ಮತ್ತು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ತರ್ಕಕ್ಕಾಗಿ |
ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ಗಳು ಕೋಡ್ ಅನ್ನು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಆದರೆ ಸಂಕೀರ್ಣ ತರ್ಕಕ್ಕಾಗಿ ಸಾಂಪ್ರದಾಯಿಕ def ಫಂಕ್ಷನ್ಗಳನ್ನು ಬಳಸುವುದು ಕೋಡ್ನ ಓದಬಲ್ಲತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.