lambda expression คืออะไร?

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

Kirill Smirnov

Data Science Consultant, Altran

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้นที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้นที่มีรูปแบบดังนี้:

lambda
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้นที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...:
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้นที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
lambda x: x**2
squared = lambda x: x**2

squared(4)
16

4 $\rightarrow$ x $\rightarrow$ x**2 $\rightarrow$ 16

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้นที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
power = lambda x, y: x**y

power(2, 3)
8

2, 3 $\rightarrow$ x, y $\rightarrow$ x**y $\rightarrow$ 8

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

อาร์กิวเมนต์ขาดหาย

power = lambda x, y: x**y

 

power(2)
TypeError
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

เปรียบเทียบกับการกำหนดฟังก์ชันปกติ

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

เปรียบเทียบกับการกำหนดฟังก์ชันปกติ

                 lambda
def

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

เปรียบเทียบกับการกำหนดฟังก์ชันปกติ

squared_lambda = lambda
def squared_normal

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

เปรียบเทียบกับการกำหนดฟังก์ชันปกติ

squared_lambda = lambda x:
def squared_normal(x):

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

เปรียบเทียบกับการกำหนดฟังก์ชันปกติ

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
squared_lambda(3)
9
squared_normal(3)
9
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

การส่ง lambda function เป็นอาร์กิวเมนต์

def function_with_callback(num, callback_function):
    return callback_function(num)

callback_function(arg) - ฟังก์ชันที่รับอาร์กิวเมนต์หนึ่งตัว

def squared_normal(x):
    return x**2
function_with_callback(2, squared_normal)
4
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

การส่ง lambda function เป็นอาร์กิวเมนต์

def function_with_callback(num, callback_function):
    return callback_function(num)

callback_function(arg) - ฟังก์ชันที่รับอาร์กิวเมนต์หนึ่งตัว

--> def squared_normal(x): <--
-->    return x**2         <--
--> function_with_callback(2, squared_normal) <--
4
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

การส่ง lambda function เป็นอาร์กิวเมนต์

def function_with_callback(num, callback_function):
    return callback_function(num)

callback_function(arg) - ฟังก์ชันที่รับอาร์กิวเมนต์หนึ่งตัว

function_with_callback(2, lambda x: x**2)
4
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้นที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้น (ไม่มีชื่อ) ที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
squared = lambda x: x**2
squared(3)
9
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

นิยาม

lambda expression/function - คือฟังก์ชันขนาดสั้น (ไม่มีชื่อ) ที่มีรูปแบบดังนี้:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
(lambda x: x**2)(3)
9
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

Ternary operator

def odd_or_even(num):
    if num % 2 == 0:
        return 'even'
    else:
        return 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

Ternary operator

def odd_or_even(num):
    return 'even' if num % 2 == 0 else 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

Ternary operator

odd_or_even = lambda num: 'even' if num % 2 == 0 else 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

การใช้งานจริง

ใช้ lambda expression เมื่อจำเป็นจริงๆ เท่านั้น!

  • ภายใน function body เพื่อทำงานเล็กๆ
  • ใช้เป็น callback
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

มาฝึกกันเถอะ!

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

Preparing Video For Download...