คู่มือสำหรับผู้เริ่มต้นใช้งานเพื่อทำความเข้าใจฟังก์ชัน Python Lambda

คู่มือสำหรับผู้เริ่มต้นใช้งานเพื่อทำความเข้าใจฟังก์ชัน Python Lambda

Lambdas ใน Python เป็นหนึ่งในคุณสมบัติที่มีประโยชน์ สำคัญ และน่าสนใจที่สุดที่ควรรู้ น่าเสียดายที่พวกเขาเข้าใจผิดและเข้าใจผิดได้ง่าย





ในบทความนี้ เราจะอธิบายทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับฟังก์ชันลึกลับเหล่านี้ วิธีใช้งาน และเหตุใดจึงมีประโยชน์





ก่อนดำดิ่งสู่ตัวอย่างเชิงปฏิบัติเหล่านี้ คุณอาจต้องการตั้งค่าสภาพแวดล้อมเสมือนของ Python หากคุณไม่ต้องการทำอย่างนั้น อย่างน้อยคุณควรลองใช้ตัวอย่างเหล่านี้ ด้วย Python shell แบบโต้ตอบออนไลน์ .





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 .

ไม่จำเป็นต้องใช้ กลับ คำหลัก---แลมบ์ดาทำสิ่งนี้ให้คุณโดยอัตโนมัติ

ต่อไปนี้เป็นวิธีสร้างฟังก์ชันแลมบ์ดาด้วยสองอาร์กิวเมนต์:

windows 10 ธีม 2018 ดาวน์โหลดฟรี
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

หากคุณยังไม่แน่ใจในประเด็นของแลมบ์ดาส หัวข้อถัดไปจะเจาะลึกและช่วยให้คุณมองเห็นแสงได้

Python Lambdas พร้อมแผนที่ ตัวกรอง และลดขนาด

ไลบรารีหลักของ Python มีสามวิธีที่เรียกว่า แผนที่ , ลด , และ กรอง . วิธีการเหล่านี้อาจเป็นเหตุผลที่ดีที่สุดในการใช้ฟังก์ชันแลมบ์ดา

NS แผนที่ ฟังก์ชั่นคาดหวังสองอาร์กิวเมนต์: ฟังก์ชันและรายการ จะใช้ฟังก์ชันนั้นและนำไปใช้กับทุกองค์ประกอบในรายการ ส่งคืนรายการองค์ประกอบที่แก้ไขเป็นวัตถุแผนที่ NS รายการ ฟังก์ชั่นใช้เพื่อแปลงวัตถุแผนที่ผลลัพธ์กลับเป็นรายการอีกครั้ง

นี่คือวิธีใช้แผนที่โดยไม่มีแลมบ์ดา:

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

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

ฟังก์ชั่นแผนที่นี้ค่อนข้างสะดวก แต่น่าจะดีกว่านี้ NS add_five ฟังก์ชั่นถูกส่งผ่านเป็นอาร์กิวเมนต์ แต่ถ้าคุณไม่ต้องการสร้างฟังก์ชั่นทุกครั้งที่ใช้แผนที่ล่ะ คุณสามารถใช้แลมบ์ดาแทน!

นี่คือลักษณะของโค้ดเดียวกัน โดยที่ฟังก์ชันแทนที่ด้วยแลมบ์ดาเท่านั้น:

windows 10 บูทจาก usb ไม่ได้
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)

ฟังก์ชันแลมบ์ดาได้เข้ามาแทนที่ความต้องการทั้งหมด มากกว่า_than_ten_func ! และจบด้วยคำง่ายๆ ห้าคำ นี่คือเหตุผลที่ lambdas มีประสิทธิภาพ: ช่วยลดความยุ่งเหยิงสำหรับงานง่ายๆ

สุดท้ายนี้เรามาดูกันที่ ลด . ลดเป็นอีกหนึ่งฟังก์ชัน 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 ยังมีการใช้งานบางอย่างที่ฟังก์ชันแลมบ์ดาไม่ช่วย

หากคุณกำลังทำอะไรมากกว่างานพื้นฐาน หรือต้องการเรียกวิธีการอื่น ให้ใช้ฟังก์ชันปกติ Lambdas นั้นยอดเยี่ยมสำหรับฟังก์ชันที่ไม่ระบุตัวตนเพียงครั้งเดียว แต่ต้องมีนิพจน์เดียวเท่านั้น หากแลมบ์ดาของคุณเริ่มดูเหมือนนิพจน์ทั่วไป แสดงว่าอาจถึงเวลาต้องจัดโครงสร้างใหม่เป็นวิธีการเฉพาะ

สำหรับคำแนะนำเพิ่มเติม ตรวจสอบของเรา คู่มือการเขียนโปรแกรมเชิงวัตถุใน Python และดูคู่มือคำถามที่พบบ่อยสำหรับผู้เริ่มต้นใช้งาน Python

แบ่งปัน แบ่งปัน ทวีต อีเมล 3 วิธีในการตรวจสอบว่าอีเมลจริงหรือปลอม

หากคุณได้รับอีเมลที่ดูน่าสงสัย คุณควรตรวจสอบความถูกต้องของอีเมลเสมอ ต่อไปนี้คือ 3 วิธีในการบอกได้ว่าอีเมลนั้นเป็นอีเมลจริงหรือไม่

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • Python
  • บทเรียนการเข้ารหัส
เกี่ยวกับผู้เขียน โจ โคเบิร์น(ตีพิมพ์บทความ 136 บทความ)

โจสำเร็จการศึกษาด้านวิทยาการคอมพิวเตอร์จากมหาวิทยาลัยลินคอล์น สหราชอาณาจักร เขาเป็นนักพัฒนาซอฟต์แวร์มืออาชีพ และเมื่อเขาไม่ได้ขับโดรนหรือเขียนเพลง เขามักจะถูกมองว่าถ่ายภาพหรือผลิตวิดีโอ

เพิ่มเติมจาก Joe Coburn

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก