ฟังก์ชัน Python Lambda พร้อมตัวอย่าง

เผยแพร่แล้ว: 2022-06-04

สารบัญ

Python — บทนำ

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 ปกติสามารถปิดได้