ವಿಷಯಕ್ಕೆ ತೆರಳಿ

ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್‌ಗಳು (Lambda Functions)

ಪೈಥಾನ್‌ನಲ್ಲಿ, ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ (Lambda Function) ಎಂದರೆ ಒಂದು ಸಣ್ಣ, ಅನಾಮಧೇಯ (anonymous), ಇನ್‌ಲೈನ್ ಫಂಕ್ಷನ್. ಇದನ್ನು lambda ಕೀವರ್ಡ್ ಬಳಸಿ ಡಿಫೈನ್ ಮಾಡಲಾಗುತ್ತದೆ.

ಸಾಂಪ್ರದಾಯಿಕ def ಫಂಕ್ಷನ್‌ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್‌ಗಳು:

  • ಯಾವುದೇ ಹೆಸರನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ.
  • ಕೇವಲ ಒಂದೇ ಒಂದು ಎಕ್ಸ್‌ಪ್ರೆಶನ್ (expression) ಅನ್ನು ಹೊಂದಿರಬಹುದು.
  • ಈ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ನ ಫಲಿತಾಂಶವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತವೆ.

ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಸಿಂಟ್ಯಾಕ್ಸ್

lambda arguments: expression
  • lambda: ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಅನ್ನು ಡಿಫೈನ್ ಮಾಡುವ ಕೀವರ್ಡ್.
  • arguments: ಫಂಕ್ಷನ್‌ಗೆ ನೀಡಲಾಗುವ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳು (ಅನೇಕ ಇರಬಹುದು).
  • expression: ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಬಳಸಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ಒಂದೇ ಒಂದು ಎಕ್ಸ್‌ಪ್ರೆಶನ್.

ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಅನ್ನು ಏಕೆ ಮತ್ತು ಎಲ್ಲಿ ಬಳಸಬೇಕು?

ಸಣ್ಣ, ಒಂದು-ಬಾರಿಯ (one-time use) ಫಂಕ್ಷನ್‌ಗಳು ಬೇಕಾದಾಗ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್‌ಗಳು ಅತ್ಯಂತ ಉಪಯುಕ್ತ. ಇವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ filter(), map(), ಮತ್ತು sorted() ನಂತಹ ಹೈಯರ್-ಆರ್ಡರ್ ಫಂಕ್ಷನ್‌ಗಳೊಂದಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆ 1: ಮೂಲಭೂತ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್

ಸಾಂಪ್ರದಾಯಿಕ ಫಂಕ್ಷನ್:

def square(x):
    return x * x

ಅದೇ ಫಂಕ್ಷನ್ ಅನ್ನು ಲ್ಯಾಂಬ್ಡಾ ಬಳಸಿ:

square_lambda = lambda x: x * x

print(square_lambda(5)) # Output: 25

ಉದಾಹರಣೆ 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)

ಔಟ್‌ಪುಟ್:

[{'name': 'ನಿಶ್ಕಲಾ', 'age': 28}, {'name': 'ರವಿಕಿರಣ', 'age': 30}, {'name': 'ಗೋವರ್ಧನ್', 'age': 45}]

ಲ್ಯಾಂಬ್ಡಾ vs. def ಫಂಕ್ಷನ್‌ಗಳು

ಗುಣಲಕ್ಷಣ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ def ಫಂಕ್ಷನ್
ಹೆಸರು ಅನಾಮಧೇಯ (ಹೆಸರಿಲ್ಲ) ಹೆಸರು ಹೊಂದಿರುತ್ತದೆ
ಬಾಡಿ (Body) ಒಂದೇ ಒಂದು ಎಕ್ಸ್‌ಪ್ರೆಶನ್ ಅನೇಕ ಸ್ಟೇಟ್‌ಮೆಂಟ್‌ಗಳನ್ನು ಹೊಂದಿರಬಹುದು
return ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ನ ಫಲಿತಾಂಶವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ return ಸ್ಟೇಟ್‌ಮೆಂಟ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಬಳಸಬೇಕು
ಬಳಕೆ ಸಣ್ಣ, ಇನ್‌ಲೈನ್ ಕಾರ್ಯಗಳಿಗಾಗಿ ಸಂಕೀರ್ಣ ಮತ್ತು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ತರ್ಕಕ್ಕಾಗಿ

ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್‌ಗಳು ಕೋಡ್ ಅನ್ನು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಆದರೆ ಸಂಕೀರ್ಣ ತರ್ಕಕ್ಕಾಗಿ ಸಾಂಪ್ರದಾಯಿಕ def ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಬಳಸುವುದು ಕೋಡ್‌ನ ಓದಬಲ್ಲತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.