ยินดีต้อนรับกลับ.
มาพูดถึงสิ่งที่ฉันชอบจริงๆ กันดีกว่า เรียกว่า Lambda Expressions
และแลมบ์ดาเป็นศัพท์วิทยาศาสตร์คอมพิวเตอร์ที่เข้ากันได้กับแนวคิดการเขียนโปรแกรมเชิงฟังก์ชันนี้จริงๆ
คุณเห็นไหมว่านิพจน์แลมบ์ดาใน Python เป็นฟังก์ชันที่ไม่ระบุตัวตนเพียงครั้งเดียวที่คุณไม่ต้องการมากกว่าหนึ่งครั้ง
นั่นหมายความว่าอย่างไร?
นิพจน์แลมบ์ดามีประโยชน์จริง ๆ เมื่อคุณใช้กับฟังก์ชันที่คุณใช้เพียงครั้งเดียว
จำไว้ว่าเราพูดถึงฟังก์ชันต่างๆ มีประโยชน์อย่างไร เพราะเราสามารถกำหนดมันแล้วใช้ฟังก์ชันเหล่านี้ซ้ำแล้วซ้ำอีก
ซึ่งช่วยให้เราไม่ต้องคัดลอกและวางโค้ด
ฟังก์ชันแลมบ์ดามีไว้สำหรับโอกาสที่เรามีฟังก์ชัน แต่เราต้องใช้เพียงครั้งเดียวเท่านั้น
แล้วส่วนที่สองก็คือ พวกมันทำหน้าที่นิรนาม
นั่นเป็นเพราะเราใช้เพียงครั้งเดียวเท่านั้น
เราไม่จำเป็นต้องมีชื่อสำหรับพวกเขา เพราะฉันหมายความว่า เราไม่จำเป็นต้องเก็บมันไว้ที่ใดในเครื่องของเรา
ฉันต้องการใช้มันเพียงครั้งเดียว
เรียกใช้มันและจากนั้นฉันก็ทำกับมัน
แค่โยนมันทิ้งไป
แล้วฟังก์ชันแลมบ์ดามีลักษณะอย่างไร?
ฟังก์ชันแลมบ์ดามีลักษณะดังนี้
เราพูดแลมบ์ดาในหลาม
ขอผมเพิ่มที่ว่างตรงนี้หน่อยเพื่อให้เราเห็น
เราว่าแลมบ์ดาและคุณจะเห็นว่าเป็นสีน้ำเงินที่ไฮไลต์
แล้วผมจะบอกว่าพารามิเตอร์ที่ฟังก์ชันนี้จะได้รับ แล้วก็โคลอน แล้วก็ฟังก์ชันบางประเภทตรงนี้
และพารามิเตอร์
หรือแทนที่จะเป็นฟังก์ชัน มันจะเป็นการดัดแปลงบางอย่างที่เราทำ
สมมติว่าการกระทำที่เราต้องการจะทำ
บนพารามิเตอร์
เอาล่ะ มันยังดูสับสนอยู่ ดังนั้นเรามาลองใช้มันในฟังก์ชันที่เราสร้างขึ้นกัน
สมมุติว่าคูณด้วยสองเป็นหนึ่งในสิ่งที่เราจะใช้เพียงครั้งเดียว
ฉันต้องการคูณด้วยสองเท่านั้น
นั่นคือรายการของฉันแล้วฉันก็ทำเสร็จแล้ว
ฉันไม่จำเป็นต้องบันทึกลงในหน่วยความจำ
มันเป็นเพียงชิ้นส่วนของรหัสพิเศษ
ฉันไม่ต้องการสิ่งนี้
เราจะทำได้อย่างไร?
สมมุติว่าเรามีฟังก์ชันแผนที่กลับมาที่นี่ และมาเปลี่ยนเป็นรายการกัน
และสำหรับตอนนี้ ฉันแค่จะย่อให้เล็กที่สุด
เราจึงเน้นเฉพาะการคูณด้วยสอง
ทีนี้ลองกลับไปคูณสองกัน
จำไว้ว่าเราเคยมีมันมาก่อน
รายการของฉันและเราไม่ต้องการพารามิเตอร์ที่สามเช่นนั้น
ด้วยฟังก์ชันแลมบ์ดา ฉันสามารถพูดได้ว่า เฮ้ ฉันไม่จำเป็นต้องสร้างฟังก์ชันใหม่ทั้งหมด ฉันจะใช้เพียงครั้งเดียว
ขอเพียงแค่ลบสิ่งนี้ทั้งหมด
และแทนที่จะใช้การคูณด้วยสอง ผมจะบอกว่าแลมบ์ดา
และที่นี่ฉันจะให้พารามิเตอร์
ฉันจะได้รับพารามิเตอร์ใด
ฉันจะได้รับสินค้าจากรายการของฉัน
แล้วในนี้ เราต้องการทำอะไรกับรายการของฉัน?
ผมอยากคูณมันด้วยสอง
ไม่เป็นไร.
นี้สามารถทำงาน?
ปล่อยให้มันเป็นไป
ฉันจะวิ่ง
โว้ว.
คุณเห็นไหม
ฉันไม่ได้ใช้การคูณด้วยสองด้วยซ้ำ
อันที่จริงฉันสามารถลบมันได้
และถ้าฉันคลิกเรียกใช้ ทุกอย่างยังคงใช้งานได้
ตอนนี้.
ทำไมถึงเป็นเช่นนี้?
โปรดจำไว้ว่า นิพจน์ Lambda เป็นฟังก์ชันที่ไม่ระบุชื่อเพียงครั้งเดียว
ไม่มีชื่อที่แนบมากับฟังก์ชันนี้
นี่คือฟังก์ชันตรงนี้
ที่คุณไม่จำเป็นต้องวิ่งมากกว่าหนึ่งครั้ง
ดังนั้นเมื่อล่ามรันโค้ดบรรทัดนี้ ล่ามจะไม่จดจำสิ่งนี้
มันก็แค่ลืมมันไป
แต่มันทำหน้าที่แทนเรา
ในกรณีของเรา เรากำลังพูดว่า เฮ้ ฉันต้องการสร้างนิพจน์แลมบ์ดา
ฉันจะเอารายการจากรายการของฉัน
แล้วผมจะคูณรายการนั้นด้วย 2 แล้วนี่ส่งคืนโดยอัตโนมัติอีกครั้ง
ลำดับที่เราทำคือแลมบ์ดาแล้ว
เราให้รถเข็นเด็ก Colin และจากนั้นดำเนินการที่เราต้องการ
ในกรณีของเรามันจะเป็นรถเข็น
และการกระทำใดๆ ที่เราต้องการจะทำ
ชอบ.
ในกรณีของเรา รายการคูณสอง และสิ่งนี้จะส่งคืนโดยอัตโนมัติ
มันเจ๋งแค่ไหน?
นี่เป็นคุณสมบัติที่ดีมากของ Python ในการทำให้โค้ดของคุณดูดีและสะอาด และไม่เกะกะกับฟังก์ชันเหล่านี้ทั้งหมด
และภาษาอื่นๆ อาจไม่มีแลมบ์ดา แต่บางครั้งเรียกว่าฟังก์ชันที่ไม่ระบุตัวตน
อีกครั้งที่เราได้พูดคุยกันว่าทำไมพวกเขาจึงไม่ระบุชื่อ
พวกมันเหมือนกับฟังก์ชั่นปกติและแม้กระทั่งทำตัวเหมือนพวกมัน
แต่เราใช้เพียงครั้งเดียวและไม่มีชื่อ
แต่คุณจะเห็นได้ว่าสิ่งนี้ทำให้ทุกอย่างสะอาดขึ้นเล็กน้อย
จะเกิดอะไรขึ้นหากเราพยายามกรองด้วยฟังก์ชันแลมบ์ดาในตอนนี้
ถ้าคุณต้องการ คุณสามารถหยุดวิดีโอชั่วคราวและลองด้วยตัวเอง
แต่มันควรจะค่อนข้างง่ายใช่มั้ย?
ถ้าฉันกรอง
ฉันทำได้ แลมบ์ดา
รายการแล้วรายการ
เราจะคัดลอกสิ่งนี้
การดำเนินการที่เราต้องการทำกับรายการคือสิ่งนี้
และถ้าผมรันมัน
อีกครั้ง.
มันได้ผล.
อะไรจะดีขนาดนั้น?
ไม่ต้องการฟังก์ชั่นนี้อีกต่อไป
ดีมาก ดีมาก
ลดแล้วไง?
เราสามารถใช้ลดกับแลมบ์ดาได้หรือไม่?
แน่นอน.
ทำไมจะไม่ล่ะ?
สมมติว่าที่นี่เราจะบอกว่าลด
เราจะลบรายการออกจากที่นี่เพราะเราสร้างค่าเพียงค่าเดียว
ฉันจะบอกว่าแลมบ์ดา
Item Remember reduce ยอมรับพารามิเตอร์ของตัวสะสมแล้วตามด้วยรายการ
ผมก็เลยให้พารามิเตอร์แบบนี้สองตัว แล้วบอกว่า เราต้องการทำอะไร?
ฉันแค่ต้องการเพิ่มตัวสะสมกับไอเท็ม
ดังนั้นถ้าฉันทำรายการของฉันที่นี่และคลิกเรียกใช้
ตรวจสอบออก
ที่ทำงานเช่นกัน
มันเจ๋งแค่ไหน?
อีกครั้ง เราไม่ต้องการตัวสะสมอีกต่อไป และตอนนี้เรามีฟังก์ชันบรรทัดเดียวที่ฉันสามารถเรียกใช้และลดรายการได้ทันที
เยี่ยมมาก
เรากำลังจะไปสำรวจแลมบ์ดาอีกสักหน่อย โดยเฉพาะอย่างยิ่งในส่วนความเข้าใจของหลักสูตร
ดังนั้นหากคุณยังคงไม่ใช้งาน 100% ไม่ต้องกังวล เราจะมีกรณีการใช้งานเพิ่มเติมและเหตุใดจึงมีประโยชน์ในหลักสูตรนี้ในภายหลัง
แต่แลมบ์ดานิพจน์ ฉันชอบที่พวกเขาทำให้โค้ดของคุณเล็กมาก
อย่างไรก็ตาม พวกเขาทำให้โค้ดอ่านน้อยลงเล็กน้อย
ดังนั้นจึงเป็นการแลกเปลี่ยนที่คุณสามารถใช้นิพจน์แลมบ์ดาได้อย่างชาญฉลาด แต่ทำให้โค้ดของคุณสับสนกับผู้อื่น
ดังนั้นคุณจึงต้องการระวัง
สำหรับตอนนี้เราทำเสร็จแล้ว
แล้วพบกันใหม่ในวิดีโอหน้าครับ
ลาก่อน.