หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ
ฟังก์ชันขั้นสูง
ฟังก์ชัน Lambda
วัตถุประสงค์
ใช้ lambda functions เพื่อบันทึกรายการบริโภคบางอย่างเพื่อให้สามารถรวบรวมสำหรับการจัดส่งในภายหลัง
ผลไม้และเบอร์รี่บางส่วนในทุ่งเกือบพร้อมสำหรับการเก็บเกี่ยวเพื่อที่จะเก็บรักษา จัดส่ง และขาย จะเป็นความคิดที่ดีที่จะบันทึกรายการที่เกือบพร้อมเพื่อให้คุณประมาณจำนวนสินค้าจากทุ่งนี้ที่กำลังถูกบรรจุและจัดส่ง
เพื่อเพิ่มประสิทธิภาพโค้ดของคุณ คุณสามารถใช้ lambda functions ซึ่งเป็นวิธีอีกแบบหนึ่งในการสร้างฟังก์ชันกำหนดเอง แต่จะเร็วกว่าหากฟังก์ชันที่สร้างขึ้นมีความซับซ้อนไม่มาก
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
ในตัวอย่างด้านบน คุณมีสองฟังก์ชัน คือฟังก์ชันกำหนดเองและ lambda function แม้ว่าจะเขียนแตกต่างกัน แต่การทำงานนั้นเหมือนกัน lambda function นั้นใช้งานได้ง่ายกว่าและสามารถตั้งค่าขึ้นได้อย่างรวดเร็วในตอนทำงานของโค้ด อย่างไรก็ตาม วิธีปกติในการกำหนดฟังก์ชันก็ยังคงมีประโยชน์อย่างมากสำหรับลำดับโค้ดที่ซับซ้อน
มีสอง (2) ประเภทของรายการที่สามารถจำแนกในทุ่ง ได้แก่ "fruits" และ "berries" ในสอง (2) ประเภทนี้ มีผลไม้สาม (3) อย่าง คือ apples, pears และ oranges และมีเบอร์รี่สาม (3) อย่าง คือ red, blue และ purple
เริ่มแรกให้ตั้งค่า lambda function ตามที่แสดงด้านบนซึ่งมีชื่อว่า calculate ซึ่งจะช่วยให้เราได้จำนวนสินค้าที่คาดการณ์ไว้สำหรับฤดูกาลโดยการบวกจำนวนรายการสามรายการแล้วคูณด้วยสอง (2) จากนั้นสร้าง lambda function อีกตัวที่ชื่อว่า estimate เพื่อประมาณจำนวนสินค้าที่จะถูกเก็บรวบรวมในรูปแบบฟังก์ชันพูดแบบกำหนดเอง สุดท้ายตั้งค่า lambda function อีกตัวที่ชื่อว่า total ซึ่งทำหน้าที่บวกค่าจากสองค่าเข้าด้วยกันแล้วลบค่าที่สามที่มีชื่อว่า loss
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
สร้างตัวแปรสำหรับผลไม้ทั้งสาม (3) ชนิด และเพิ่มจำนวนของแต่ละชนิดที่มีในทุ่ง เดินไปที่เครื่องหมาย X สีเข้มและใช้ lambda function calculate() กับตัวแปรผลไม้ทั้งสาม จากนั้นเก็บค่าไว้ในตัวแปรที่กำหนดเองชื่อ fruit_number เช่นนี้: fruit_number = calculate(orange,pear,apple) ต่อจากนั้นให้ใช้ lambda function estimate() โดยใช้ fruit_number เป็นจำนวนและ "fruits" เป็นชื่อ เช่นนี้: estimate(fruit_number, "fruits" )
เมื่อทำงานกับผลไม้เสร็จแล้ว ให้เดินไปที่เครื่องหมาย X สีอ่อนและทำแบบเดียวกันกับเบอร์รี่ ตั้งค่าตัวแปรสำหรับเบอร์รี่ทั้งสาม (3) โดยใช้จำนวนพุ่มที่คุณนับในทุ่ง จากนั้นตั้งค่าการใช้งาน lambda function แบบเดียวกับผลไม้ เช่นนี้: berry_number = calculate(red,blue,purple) แล้วใช้ lambda function estimate กับ berry_number และ "berries" เป็นอาร์กิวเมนต์
มีค่าคงที่ชื่อ doc ที่เก็บการประมาณสินค้าสูญเสียของเดือนที่แล้ว ไปที่โกดัง เดินไปที่เครื่องหมาย X สีทอง แล้วใช้ฟังก์ชัน speak() กับค่าคงที่ดังกล่าวเพื่ออ่านเอกสารบนโต๊ะ เพื่อให้คุณสามารถตรวจสอบจำนวนของเดือนที่ผ่านมาได้
เมื่อทราบจำนวนของเดือนที่แล้วแล้ว ให้เดินไปที่เครื่องหมาย X สีเข้มเหนือพรมสีม่วง หันหน้าไปที่โต๊ะเพื่อให้คุณตรวจสอบยอดรวมสำหรับเดือนนี้ สร้างตัวแปรชื่อ season เพื่อคำนวณยอดรวมของฤดูกาล โดยใช้ fruit_number และ berry_number เป็นจำนวน และใช้ตัวเลขจาก doc เป็นอาร์กิวเมนต์ loss เช่นนี้: season = total(berry_number,fruit_number, number found in doc constant)
ต่อด้วยการใช้ lambda function estimate() โดยใช้ตัวแปร season เป็นอาร์กิวเมนต์ของจำนวนและ "products" เป็นอาร์กิวเมนต์ของชื่อ เพื่อให้ระดับนี้สมบูรณ์