หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ
ฟังก์ชันขั้นสูง
ฟังก์ชันบางส่วน
วัตถุประสงค์
บรรจุและวางวัสดุก่อสร้างที่ถูกจัดส่งมาทางท่าเรือโดยใช้ฟังก์ชันแบบบางส่วน
มีการจัดส่งวัสดุบางอย่างมาที่ท่าเรือแล้ว ซึ่งจะต้องถูกบรรจุและเก็บรักษาเพื่อใช้เป็นวัสดุก่อสร้าง วัสดุเหล่านี้จะต้องห่อด้วยผ้าและผูกด้วยด้าย อีกทั้งยังจำเป็นต้องชั่งน้ำหนักของแต่ละชิ้นเมื่อบรรจุเพื่อให้การขนส่งในภายหลังมีประสิทธิภาพ เพื่ออำนวยความสะดวกในกระบวนการนี้ เราสามารถปรับปรุงกระบวนการด้วยการใช้ ฟังก์ชันแบบบางส่วน
ฟังก์ชันแบบบางส่วน คือฟังก์ชันที่กำหนดขึ้นเองและย่อความโดยไม่ต้องระบุค่าอาร์กิวเมนต์ที่ค่อนข้างคงที่ วิธีนี้ช่วยให้คุณสามารถใช้ฟังก์ชันที่รับอาร์กิวเมนต์หลายตัว และเรียกใช้ด้วยการส่งอาร์กิวเมนต์เพียงตัวเดียวหรือจำนวนที่คุณเลือก
from functools import partial
เริ่มต้นโดยการนำเข้า partial จากโมดูลที่รู้จักกันในชื่อ functools ซึ่งจะช่วยให้คุณสร้าง ฟังก์ชันแบบบางส่วน ได้ การนำเข้ารหัสมักจะวางไว้ที่ส่วนบนของโปรแกรม
ตั้งค่าฟังก์ชันชื่อ weight และให้มันรับอาร์กิวเมนต์สามตัว คือ thread , cloth และ material ฟังก์ชันนี้จะช่วยให้คุณคำนวณน้ำหนักของวัสดุที่ถูกบรรจุ เราสามารถปรับปรุงกระบวนการนี้ได้อีกด้วยการส่งผ่านผ่านฟังก์ชันแบบบางส่วน
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
สร้าง ฟังก์ชันแบบบางส่วน ชื่อ package ซึ่งถูกตั้งค่าด้วยกระบวนการที่คล้ายกับฟังก์ชัน lambda โดยใช้ partial() ในการเติมข้อมูลให้ฟังก์ชันและเพิ่มชื่อของฟังก์ชันรวมถึงกำหนดค่าอาร์กิวเมนต์คงที่สำหรับพารามิเตอร์ที่คุณต้องการกำหนด
อาร์กิวเมนต์ใดๆ จากฟังก์ชันเดิมที่คุณไม่ได้กำหนดไว้ จะกลายเป็นอาร์กิวเมนต์ที่จำเป็นต้องระบุเมื่อเรียกใช้ ฟังก์ชันแบบบางส่วน ในกรณีของ ฟังก์ชันแบบบางส่วน package() นั้นคืออาร์กิวเมนต์ material
เดินไปยัง X เครื่องหมายสีเข้มหน้ากล่องเพื่อหยิบวัสดุบรรจุ ใน X เครื่องหมายบนพรมสีเหลือง ให้ใช้ฟังก์ชัน collect() เพื่อเก็บ `