ฟังก์ชัน Python Lambda พร้อมตัวอย่าง
เผยแพร่แล้ว: 2022-06-04Python — บทนำ
Python เป็นภาษาโปรแกรมทั่วไปที่ได้รับความนิยมอย่างมาก เป็นภาษาระดับสูงที่ตีความซึ่งเน้นความสามารถในการอ่านโค้ดโดยใช้การเยื้องที่สำคัญ โปรแกรมเมอร์ใช้ Python เพื่อเขียนโค้ดที่สะอาดและสมเหตุสมผลสำหรับโครงการทุกขนาด
Python ถือกำเนิดขึ้นในปี 1980 โดยเป็นผู้สืบทอดภาษาการเขียนโปรแกรม ABC โดย Guido Van Rossum ตั้งแต่นั้นมา Python ยังคงเป็นภาษาโปรแกรมยอดนิยมเนื่องจากมีความเก่งกาจ
ฟังก์ชั่น — บทนำ
ฟังก์ชันคือโค้ดบล็อกที่ทำงานเมื่อมีการเรียกสามารถเรียกได้ n ครั้งในโปรแกรม เป็นคำสั่งรหัสที่มีโครงสร้างและทำหน้าที่เฉพาะ และสามารถใช้ได้ทุกเมื่อ ฟังก์ชั่นถูกจำแนกโดยพื้นฐานเป็น:
- User-Defined Function (USF) — ฟังก์ชันที่ปรับแต่งได้ซึ่งสามารถเปลี่ยนแปลงได้ตามความต้องการของโปรแกรมเมอร์
- Built-in Functions (BIF) — ฟังก์ชันที่ไม่สามารถปรับแต่งได้และต้องใช้ตามที่เป็นอยู่
เรียนรู้หลักสูตรวิทยาศาสตร์ข้อมูลออนไลน์ที่ upGrad
ฟังก์ชันไพธอนแลมบ์ดา
ฟังก์ชัน Python Lambda นั้นไม่ระบุตัวตนโดยพื้นฐานแล้วเนื่องจากไม่มีชื่อที่แน่นอน ฟังก์ชัน def ใช้เพื่อแสดงถึงฟังก์ชันปกติใน Python ในขณะเดียวกัน คำหลัก Lambda ใช้เพื่อกำหนดฟังก์ชัน Python ที่ไม่ระบุชื่อ
ฟังก์ชัน Lambda เป็นฟังก์ชันขนาดเล็กที่สามารถรับอาร์กิวเมนต์ได้หลายอาร์กิวเมนต์ แต่มีเพียงหนึ่งนิพจน์ พวกเขายังมีไวยากรณ์ที่เข้มงวดกว่าแต่กระชับกว่าฟังก์ชัน Python ปกติ ฟังก์ชันแลมบ์ดาถูกเพิ่มลงในภาษา Python ในปี 1994 พร้อมกับฟังก์ชัน แผนที่ ( ) ตัวกรอง () และ ฟังก์ชัน ย่อ ()
ตรวจสอบสหรัฐอเมริกา - โปรแกรมวิทยาศาสตร์ข้อมูล
หลักสูตรประกาศนียบัตรวิชาชีพด้านวิทยาศาสตร์ข้อมูลและการวิเคราะห์ธุรกิจ | วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ข้อมูล | วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ข้อมูล | หลักสูตรประกาศนียบัตรขั้นสูงด้านวิทยาศาสตร์ข้อมูล |
Executive PG Program in Data Science | Python Programming Bootcamp | หลักสูตรประกาศนียบัตรวิชาชีพด้านวิทยาศาสตร์ข้อมูลเพื่อการตัดสินใจทางธุรกิจ | หลักสูตรขั้นสูงด้านวิทยาศาสตร์ข้อมูล |
ในการกำหนดฟังก์ชันที่ไม่ระบุชื่อ เราต้องใช้คีย์เวิร์ดแลมบ์ดา เช่น def ใช้สำหรับฟังก์ชันปกติ มีสามส่วนในฟังก์ชันที่ไม่ระบุชื่อที่กำหนดไว้ใน Python:
- คำสำคัญ แลมบ์ดา
- พารามิเตอร์หรือตัวแปรที่ถูกผูกไว้
- ฟังก์ชั่นร่างกาย
ไวยากรณ์
ไวยากรณ์ของฟังก์ชันแลมบ์ดามีดังนี้:
แลมบ์ดา p1, p2: นิพจน์
p1 และ p2 เป็นพารามิเตอร์ที่นี่ ไม่มีข้อจำกัดในการเพิ่มพารามิเตอร์ในฟังก์ชันแลมบ์ดา คุณสามารถเพิ่มได้มากหรือน้อยตามที่คุณต้องการ แต่ฟังก์ชันแลมบ์ดาถูกจำกัดทางวากยสัมพันธ์กับนิพจน์เดียว
ตัวอย่างฟังก์ชันแลมบ์ดาใน Python:
ตัวอย่าง 1
x =”ฟังก์ชันแลมบ์ดา”
#แลมบ์ดาผ่านการพิมพ์
(แลมบ์ดา x : พิมพ์(x))(x)
เอาท์พุต
ฟังก์ชั่นแลมบ์ดา
ตัวอย่าง 2
x = แลมบ์ดา a : a + 10
พิมพ์(x(5))
เอาท์พุต
15
ผู้เรียนของเรายังอ่าน: เรียนรู้ Python ออนไลน์ฟรี
ความแตกต่างระหว่างฟังก์ชันปกติและฟังก์ชันแลมบ์ดา
ฟังก์ชันแลมบ์ดามีความแตกต่างทางวากยสัมพันธ์มากกว่าฟังก์ชันปกติ
- เฉพาะนิพจน์และไม่ใช่คำสั่งที่ใช้ในเนื้อหา หากมีการใช้คำสั่งใด ๆ เช่น pass, assert, return หรือ rise ผลลัพธ์จะแสดง SyntaxError
ตัวอย่าง
>>> (แลมบ์ดา x: ยืนยัน x == 2)(2)
ไฟล์ “<input>” บรรทัดที่ 1
(แลมบ์ดา x: ยืนยัน x == 2)(2)
^
SyntaxError: ไวยากรณ์ไม่ถูกต้อง
- ฟังก์ชันแลมบ์ดาสามารถดำรงอยู่ในนิพจน์เดียวเท่านั้น แม้ว่านิพจน์จะกระจายไปทั่วเนื้อหาโดยใช้หลายสตริง แต่ก็สามารถยังคงเป็นนิพจน์เดียวได้
ตัวอย่าง :
>>> (แลมบ์ดา x:
… (x % 2 และ 'คี่' หรือ 'คู่'))(3)
'แปลก'
เมื่ออาร์กิวเมนต์แลมบ์ดาเป็นค่าคี่ โค้ดจะส่งกลับสตริงคี่และแม้ว่าจะไม่ใช่อาร์กิวเมนต์ก็ตาม รหัสครอบคลุมสองบรรทัดตามที่อยู่ภายในวงเล็บ แต่ยังคงเป็นนิพจน์เดียว
- ฟังก์ชันแลมบ์ดาไม่สนับสนุนคำอธิบายประกอบประเภท การเพิ่มคำอธิบายประกอบให้กับไวยากรณ์แลมบ์ดาจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์
- IIFE หรือนิพจน์ฟังก์ชันที่เรียกใช้ทันทีคือฟังก์ชันที่ดำเนินการทันทีที่มีการกำหนด เรียกอีกอย่างว่า Self Executing Anonymous Function IIFE เป็นผลโดยตรงจากฟังก์ชันแลมบ์ดา เนื่องจากฟังก์ชันแลมบ์ดาสามารถเรียกได้ตามที่กำหนดไว้
ตอนนี้ มาดูความแตกต่างที่สำคัญระหว่างฟังก์ชันปกติและฟังก์ชันแลมบ์ดาคือ:
(แหล่งที่มา)
ฟังก์ชั่นแลมบ์ดา – ข้อดีและข้อเสีย
ข้อดี
- ทำให้โค้ดอ่านง่ายขึ้น
- เหมาะสำหรับฟังก์ชั่นที่ใช้งานครั้งเดียว
- เข้าใจง่ายและสามารถใช้สำหรับคำอธิบายเชิงตรรกะง่ายๆ
จุดด้อย:
- ไม่สามารถดำเนินการนิพจน์อิสระได้หลายนิพจน์
- การใช้ฟังก์ชันแลมบ์ดาไม่เหมาะหากโค้ดจะขยายเกินหนึ่งบรรทัดในฟังก์ชันปกติ (def)
- อินพุต เอาต์พุต และการดำเนินการทั้งหมดไม่สามารถอธิบายได้ใน docstring เหมือนในฟังก์ชันปกติ
จะใช้แลมบ์ดาสได้ที่ไหน
แม้ว่าฟังก์ชัน def ปกติและฟังก์ชันแลมบ์ดาจะมีความแตกต่างที่สำคัญ แต่ภายในจะได้รับการปฏิบัติภายใน
- การใช้งานทั่วไปของฟังก์ชันแลมบ์ดาใน Python นั้นมีไว้สำหรับการเขียนโปรแกรมเชิงฟังก์ชัน คุณสามารถใช้แลมบ์ดาในการเขียนโปรแกรมเชิงฟังก์ชันเพื่อจัดหาฟังก์ชันเป็นพารามิเตอร์ให้กับฟังก์ชันอื่นได้
- หากคุณต้องการลดจำนวนบรรทัดเพื่อระบุฟังก์ชัน lambdas คือคำตอบ
- แลมบ์ดายังใช้กับฟังก์ชันที่มีลำดับสูงกว่า เช่น map(), reduce() เป็นต้น
- การตอบสนองต่อเหตุการณ์เฟรมเวิร์ก UI สามารถติดตามได้โดยใช้ฟังก์ชันแลมบ์ดา
จะละเว้นจากการใช้ฟังก์ชันแลมบ์ดาได้ที่ไหน
- การเขียนฟังก์ชันแลมบ์ดาที่ซับซ้อนไม่ใช่วิธีปฏิบัติที่ดี เนื่องจากจะทำให้ถอดรหัสได้ยาก
- ละเว้นจากการใช้ฟังก์ชันแลมบ์ดาสำหรับการดำเนินการที่เกิดซ้ำ
- หากโค้ดไม่เป็นไปตาม Python Style Guide(PEP8)
ฟังก์ชันแลมบ์ดาได้รับการทดสอบเหมือนกับฟังก์ชันปกติ ใช้ได้ทั้ง unittest และ doctest
อ่านบทความยอดนิยมของเราในสหรัฐอเมริกา - Data Science
หลักสูตรการวิเคราะห์ข้อมูลพร้อมใบรับรอง | JavaScript หลักสูตรออนไลน์ฟรีพร้อมใบรับรอง | คำถามและคำตอบสัมภาษณ์ Python ที่ถูกถามมากที่สุด |
คำถามและคำตอบในการสัมภาษณ์นักวิเคราะห์ข้อมูล | ตัวเลือกอาชีพด้าน Data Science อันดับต้น ๆ ในสหรัฐอเมริกา [2022] | SQL Vs MySQL – อะไรคือความแตกต่าง |
สุดยอดคู่มือสำหรับประเภทของข้อมูล | Python Developer เงินเดือนในสหรัฐอเมริกา | เงินเดือนนักวิเคราะห์ข้อมูลในสหรัฐอเมริกา: เงินเดือนเฉลี่ย |
ฟังก์ชั่นแลมบ์ดาพร้อมตัวกรอง ()
Filter() เป็นฟังก์ชัน Python ในตัวและแสดงรายการเป็นอาร์กิวเมนต์ ตัวกรอง () ใช้เมื่อรายการที่ทำซ้ำได้ทั้งหมดอยู่ในรายการ และรายการอื่นถูกส่งกลับซึ่งมีรายการที่ฟังก์ชันเป็นจริง
ตัวอย่าง :
# รหัส Python เพื่อแสดง
# ตัวกรอง () พร้อมแลมบ์ดา ()
ลี = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = รายการ(ตัวกรอง(แลมบ์ดา x: (x%2 != 0) , li))
พิมพ์ (final_list)
เอาท์พุท:
[5, 7, 97, 77, 23, 73, 61]
(แหล่งที่มา)
ตัวอย่าง :
# โปรแกรมกรองเฉพาะรายการคู่จากรายการ
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = รายการ(ตัวกรอง(แลมบ์ดา x: (x%2 == 0) , my_list))
พิมพ์ (new_list)
เอาท์พุต
[4, 6, 8, 12]
ฟังก์ชั่นแลมบ์ดาพร้อมแผนที่ ()
ฟังก์ชันแผนที่จะใช้เมื่อรายการทั้งหมดอยู่ในรายการ และรายการจะถูกส่งกลับพร้อมกับรายการที่ส่งคืนโดยฟังก์ชันนั้นสำหรับแต่ละรายการ
ตัวอย่าง : หากต้องการเพิ่มมูลค่าของแต่ละรายการในรายการเป็นสองเท่า โค้ดจะเป็นดังนี้:
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = รายการ (แผนที่ (แลมบ์ดา x: x * 2 , my_list))
พิมพ์ (new_list)
เอาท์พุท:
[2, 10, 8, 12, 16, 22, 6, 24]
ตัวอย่าง : หากต้องการลูกบาศก์ทุกตัวเลขในรายการ โค้ดจะเป็นดังนี้
list_1 = [1,2,3,4,5,6,7,8,9]
cubed = แผนที่ (แลมบ์ดา x: pow(x,3), list_1)
รายการ (คิวบ์)
เอาท์พุท:
[1, 8, 27, 64, 125, 216, 343, 512, 729]
ฟังก์ชันแลมบ์ดาพร้อมฟังก์ชันลด ()
ฟังก์ชัน reduce() ใน Python เป็นรายการและอาร์กิวเมนต์ มันถูกเรียกให้ส่งคืนรายการที่ลดซ้ำได้และใหม่ มันค่อนข้างคล้ายกับฟังก์ชั่นการบวก
ตัวอย่าง 1
หมายเหตุ: ตัวอย่างนี้มาจากไลบรารี functools
เพื่อให้ได้ผลรวมของรายการ รหัส จะเป็น
# รหัส Python เพื่อแสดง
# ลด () ด้วยแลมบ์ดา ()
#เพื่อรับผลรวมของรายการ
จาก functools นำเข้าลด
ลี = [5, 8, 10, 20, 50, 100]
ผลรวม = ลด ((แลมบ์ดา x, y: x + y), li)
พิมพ์ (ผลรวม)
เอาท์พุท:
193
บทสรุป
การใช้ฟังก์ชันแลมบ์ดาใน Python เป็นหัวข้อที่ถกเถียงกันในหมู่โปรแกรมเมอร์มาเป็นเวลานาน แม้ว่า lambdas จะถูกแทนที่ด้วยฟังก์ชันในตัว ความเข้าใจในรายการ และไลบรารีมาตรฐาน ความเข้าใจเกี่ยวกับฟังก์ชัน lambda ก็มีความจำเป็นเช่นกัน ช่วยให้คุณเข้าใจหลักการพื้นฐานของการเขียนโปรแกรมและเขียนโค้ดได้ดีขึ้น
แม้ว่าคุณจะไม่ได้ใช้ฟังก์ชันแลมบ์ดาเป็นการส่วนตัว แต่อาจมีบางกรณีที่คุณอาจพบฟังก์ชันเหล่านี้ในโปรแกรมของผู้อื่น ดังนั้น ขอแนะนำให้คุณมีความรู้พื้นฐานเกี่ยวกับฟังก์ชันแลมบ์ดาอยู่แล้ว
หากคุณกำลังมองหาการเรียนรู้ Python ที่เต็มเปี่ยมและยกระดับอาชีพของคุณในด้านวิทยาศาสตร์ข้อมูลและการวิเคราะห์ธุรกิจ โปรแกรมประกาศนียบัตรวิชาชีพออนไลน์ของ upGrad ด้านวิทยาศาสตร์ข้อมูลและการวิเคราะห์ธุรกิจ จาก Top US University – University of Maryland เป็นทางออกที่ดีที่สุดของคุณ
โปรแกรมนี้เปิดโอกาสให้คุณได้ศึกษาในมหาวิทยาลัยชั้นนำ 100 แห่งทั่วโลก และรับใบรับรองจาก Maryland Smith เพื่อเพิ่มโอกาสในการประสบความสำเร็จในสาขานี้ เป็นหลักสูตร 9 เดือนที่สามารถเข้าถึงคู่ค้าที่จ้างงานกว่า 300 ราย โอกาสในการสัมภาษณ์ที่มั่นใจสำหรับนักศึกษาใหม่ และการให้คำปรึกษาหกครั้ง
มัณฑนากรใน Python คืออะไร?
ฟังก์ชันใน Python ที่รับอาร์กิวเมนต์ของฟังก์ชันหนึ่งและส่งกลับฟังก์ชันอื่นเรียกว่ามัณฑนากร มันแสดงด้วยไวยากรณ์มัณฑนากร สามารถใช้มัณฑนากรในฟังก์ชันแลมบ์ดาได้ แต่ไม่สามารถใช้กับไวยากรณ์มัณฑนากรได้ โดยปกติจะใช้เพื่อวัตถุประสงค์ในการดีบัก อีกวิธีหนึ่งคือสามารถใช้ฟังก์ชันแลมบ์ดาเป็นตัวตกแต่งได้ แต่ไม่แนะนำ
อาร์กิวเมนต์ในฟังก์ชัน Python Lambda คืออะไร?
ฟังก์ชันแลมบ์ดาเหมือนกับฟังก์ชัน def ปกติสนับสนุนวิธีต่างๆ ในการส่งผ่านอาร์กิวเมนต์ ซึ่งรวมถึง: อาร์กิวเมนต์เฉพาะคีย์เวิร์ด อาร์กิวเมนต์คีย์เวิร์ด/ อาร์กิวเมนต์ที่มีชื่อ Varargs/ รายการอาร์กิวเมนต์ตัวแปร รายการตัวแปรของอาร์กิวเมนต์คีย์เวิร์ด
การปิดในฟังก์ชัน Python Lambda คืออะไร?
การปิดหรือการปิดคำศัพท์เป็นฟังก์ชันที่ทุกตัวแปรอิสระยกเว้นพารามิเตอร์ถูกผูกไว้กับค่าเฉพาะในขอบเขตที่ล้อมรอบของฟังก์ชัน การปิดสามารถเรียกได้จากทุกที่ ฟังก์ชัน Lambda เหมือนกับฟังก์ชัน def ปกติสามารถปิดได้