ในโลกของการเขียนโปรแกรม Python มักจะมีแนวคิดสองประการเกิดขึ้นในการสนทนาเกี่ยวกับโค้ดที่มีประสิทธิภาพและกระชับ: ตัวสร้างและฟังก์ชันแลมบ์ดา ในฐานะซัพพลายเออร์เครื่องกำเนิดไฟฟ้า ฉันได้เห็นการใช้งานเครื่องกำเนิดไฟฟ้าในอุตสาหกรรมต่างๆ โดยตรง อย่างไรก็ตาม การทำความเข้าใจความแตกต่างระหว่างฟังก์ชันเจนเนอเรเตอร์และแลมบ์ดาเป็นสิ่งสำคัญสำหรับโปรแกรมเมอร์ที่ต้องการเขียนโค้ด Python ที่มีประสิทธิภาพมากขึ้น ในบล็อกโพสต์นี้ เราจะสำรวจความแตกต่างที่สำคัญระหว่างแนวคิดทั้งสองนี้ คุณลักษณะเฉพาะ และเวลาที่ควรใช้แต่ละแนวคิด
ตัวสร้างใน Python คืออะไร?
ตัวสร้างใน Python เป็นตัววนซ้ำชนิดพิเศษ ช่วยให้คุณสามารถวนซ้ำลำดับของค่าโดยไม่ต้องจัดเก็บค่าทั้งหมดไว้ในหน่วยความจำในครั้งเดียว สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อต้องรับมือกับชุดข้อมูลขนาดใหญ่หรือลำดับที่ไม่มีที่สิ้นสุด ตัวสร้างถูกกำหนดโดยใช้ฟังก์ชันตัวสร้างหรือนิพจน์ตัวสร้าง
ฟังก์ชั่นเครื่องกำเนิดไฟฟ้า
ฟังก์ชันตัวสร้างถูกกำหนดเหมือนฟังก์ชันปกติ แต่แทนที่จะใช้กลับคำหลักก็ใช้ผลผลิต- เมื่อฟังก์ชันตัวสร้างถูกเรียกใช้ มันจะส่งคืนอ็อบเจ็กต์ตัวสร้าง ซึ่งสามารถวนซ้ำได้โดยใช้สำหรับห่วงหรือต่อไป()การทำงาน.
นี่คือตัวอย่างง่ายๆ ของฟังก์ชันตัวสร้างที่สร้างฟังก์ชันแรกnเลขคู่:
def เลขคู่ (n): num = 0 ในขณะที่ num < n: ให้ผลผลิต num num += 2 # สร้างวัตถุตัวสร้าง gen = เลขคู่ (10) # วนซ้ำตัวสร้างสำหรับ num ใน gen: พิมพ์ (ตัวเลข)
ในตัวอย่างนี้เลขคู่function เป็นฟังก์ชันตัวสร้างเพราะมันใช้ผลผลิตคำหลัก เมื่อเรียกใช้ฟังก์ชัน ฟังก์ชันจะไม่รันโค้ดภายในฟังก์ชันทันที แต่จะส่งคืนวัตถุตัวสร้างแทน แต่ละครั้งต่อไป()ฟังก์ชันถูกเรียกใช้บนวัตถุตัวสร้าง (ไม่ว่าจะโดยตรงหรือโดยปริยายในไฟล์สำหรับวนซ้ำ) ฟังก์ชันจะดำเนินต่อจากจุดที่ค้างไว้จนกว่าจะถึงจุดถัดไปผลผลิตคำแถลง.
ตัวสร้างนิพจน์
นิพจน์ตัวสร้างจะคล้ายกับรายการความเข้าใจ แต่แทนที่จะใช้วงเล็บเหลี่ยม-พวกเขาใช้วงเล็บ-- นิพจน์ตัวสร้างเป็นวิธีที่กระชับกว่าในการสร้างตัวสร้าง
ต่อไปนี้คือตัวอย่างของนิพจน์ตัวสร้างที่สร้างกำลังสองของตัวเลข 10 ตัวแรก:
gen = (x**2 สำหรับ x อยู่ในช่วง (10)) # วนซ้ำตัวสร้างสำหรับ num ใน gen: print (num)
ฟังก์ชั่น Lambda ใน Python คืออะไร?
ฟังก์ชัน lambda ใน Python เป็นฟังก์ชันขนาดเล็กที่ไม่ระบุชื่อ สามารถรับอาร์กิวเมนต์จำนวนเท่าใดก็ได้ แต่จะมีได้เพียงนิพจน์เดียวเท่านั้น ฟังก์ชัน Lambda มักใช้เมื่อคุณต้องการฟังก์ชันแบบง่ายในช่วงเวลาสั้นๆ เช่น ในแผนที่()-กรอง(), หรือเรียงลำดับ()ฟังก์ชั่น
ต่อไปนี้คือตัวอย่างฟังก์ชัน lambda ที่บวกตัวเลข 2 ตัว:
add = lambda x, y: x + y # เรียกใช้ฟังก์ชัน lambda result = add(3, 5) print(result)
ในตัวอย่างนี้ ฟังก์ชัน lambda รับสองอาร์กิวเมนต์xและและและส่งคืนผลรวมของพวกเขา ฟังก์ชันแลมบ์ดาถูกกำหนดให้กับตัวแปรเพิ่มซึ่งสามารถเรียกได้ว่าเป็นฟังก์ชันปกติ
ความแตกต่างที่สำคัญระหว่างเครื่องกำเนิดไฟฟ้าและฟังก์ชัน Lambda
ไวยากรณ์และคำจำกัดความ
- เครื่องกำเนิดไฟฟ้า: เครื่องกำเนิดไฟฟ้าถูกกำหนดโดยใช้ฟังก์ชันตัวสร้าง (ด้วย
ผลผลิตคำหลัก) หรือนิพจน์ตัวสร้าง (โดยใช้วงเล็บ) ได้รับการออกแบบมาเพื่อสร้างลำดับของค่าเมื่อเวลาผ่านไป - ฟังก์ชันแลมบ์ดา: ฟังก์ชัน Lambda ถูกกำหนดโดยใช้
แลมบ์ดาคำหลักตามด้วยรายการอาร์กิวเมนต์ เครื่องหมายโคลอน และนิพจน์ ได้รับการออกแบบให้เป็นฟังก์ชันบรรทัดเดียวที่เรียบง่าย
วัตถุประสงค์และกรณีการใช้งาน
- เครื่องกำเนิดไฟฟ้า: ตัวสร้างจะใช้เมื่อคุณต้องการสร้างลำดับของค่าจำนวนมาก แต่ไม่ต้องการเก็บค่าทั้งหมดไว้ในหน่วยความจำในครั้งเดียว โดยทั่วไปจะใช้ในการประมวลผลข้อมูล การสตรีมข้อมูล และการวนซ้ำไฟล์ขนาดใหญ่ ตัวอย่างเช่น หากคุณกำลังทำงานกับชุดข้อมูลขนาดใหญ่และจำเป็นต้องประมวลผลทีละรายการ ตัวสร้างอาจเป็นโซลูชันที่ยอดเยี่ยม
- ฟังก์ชันแลมบ์ดา: ฟังก์ชัน Lambda จะใช้เมื่อคุณต้องการฟังก์ชันที่เรียบง่ายเพียงครั้งเดียว มักใช้ในฟังก์ชันที่มีลำดับสูงกว่า เช่น
แผนที่()-กรอง(), และเรียงลำดับ()- ตัวอย่างเช่น หากคุณต้องการจัดเรียงรายการพจนานุกรมตามคีย์เฉพาะ คุณสามารถใช้ฟังก์ชัน lambda เป็นสำคัญข้อโต้แย้งในเรียงลำดับ()การทำงาน.
การใช้หน่วยความจำ
- เครื่องกำเนิดไฟฟ้า: เครื่องกำเนิดไฟฟ้ามีประสิทธิภาพด้านหน่วยความจำเนื่องจากสร้างค่าได้ทันที โดยจะจัดเก็บเฉพาะสถานะปัจจุบันของตัวสร้างเท่านั้น ไม่ใช่ลำดับของค่าทั้งหมด ทำให้เหมาะสำหรับการทำงานกับชุดข้อมูลขนาดใหญ่
- ฟังก์ชันแลมบ์ดา: ฟังก์ชัน Lambda ไม่มีฟีเจอร์การจัดการหน่วยความจำพิเศษ มันก็เหมือนกับฟังก์ชันอื่นๆ ในแง่ของการใช้หน่วยความจำ
ส่งกลับค่า
- เครื่องกำเนิดไฟฟ้า: ตัวสร้างส่งคืนอ็อบเจ็กต์ตัวสร้าง ซึ่งเป็นตัววนซ้ำ คุณสามารถวนซ้ำออบเจ็กต์ตัวสร้างเพื่อรับค่าทีละรายการ
- ฟังก์ชันแลมบ์ดา: ฟังก์ชัน Lambda ส่งคืนผลลัพธ์ของนิพจน์ที่มีอยู่ พวกมันถูกเรียกเหมือนกับฟังก์ชันปกติและส่งกลับค่าเดียว
การใช้งานจริง
เครื่องกำเนิดไฟฟ้าในสถานการณ์จริง
ในฐานะผู้จำหน่ายเครื่องกำเนิดไฟฟ้า ฉันได้เห็นแล้วว่าเครื่องกำเนิดไฟฟ้าสามารถนำมาใช้ในอุตสาหกรรมต่างๆ ได้อย่างไร ตัวอย่างเช่น ในอุตสาหกรรมการผลิตไฟฟ้า เครื่องกำเนิดไฟฟ้าจะถูกใช้เพื่อจ่ายไฟฟ้าในพื้นที่ที่ไม่สามารถเข้าถึงโครงข่ายไฟฟ้าได้ ของเราเครื่องกำเนิดไฟฟ้าชนิดเงียบได้รับการออกแบบมาให้ทำงานเงียบ ทำให้เหมาะสำหรับพื้นที่อยู่อาศัยหรือกิจกรรมที่มีปัญหาเรื่องเสียงรบกวน ที่เครื่องกำเนิดไฟฟ้าเงียบสตาร์ทไฟฟ้าให้ความสะดวกสบายในการสตาร์ทด้วยไฟฟ้า ทำให้ใช้งานง่ายแม้สำหรับผู้ที่มีความรู้ด้านเทคนิคจำกัด และสำหรับผู้ชื่นชอบกิจกรรมกลางแจ้งของเราเครื่องกำเนิดไฟฟ้าดีเซลขนาดเล็กสำหรับการตั้งแคมป์ให้แหล่งพลังงานที่เชื่อถือได้สำหรับการเดินทางแคมป์ปิ้ง
ใน Python ตัวสร้างสามารถใช้ในสถานการณ์ที่คล้ายกันได้ ตัวอย่างเช่น หากคุณกำลังทำงานกับไปป์ไลน์การประมวลผลข้อมูล คุณสามารถใช้ตัวสร้างเพื่ออ่านไฟล์ขนาดใหญ่ทีละบรรทัดโดยไม่ต้องโหลดไฟล์ทั้งหมดลงในหน่วยความจำ สิ่งนี้สามารถปรับปรุงประสิทธิภาพของโปรแกรมของคุณได้อย่างมาก
ฟังก์ชัน Lambda ในสถานการณ์จริง
ฟังก์ชัน Lambda มักใช้ในการวิเคราะห์และการเรียงลำดับข้อมูล ตัวอย่างเช่น หากคุณมีรายการพจนานุกรมที่เป็นตัวแทนของพนักงาน และต้องการจัดเรียงตามเงินเดือน คุณสามารถใช้ฟังก์ชัน lambda เป็นสำคัญข้อโต้แย้งในเรียงลำดับ()การทำงาน:
พนักงาน = [ {'name': 'Alice', 'salary': 5,000}, {'name': 'Bob', 'salary': 3000}, {'name': 'Charlie', 'salary': 7000} ] # จัดเรียงพนักงานตามเงินเดือน sorted_employees = เรียงลำดับ(พนักงาน, คีย์=lambda x: x['salary']) # พิมพ์พนักงานที่เรียงลำดับสำหรับพนักงานใน sorted_employees: พิมพ์ (พนักงาน)
เมื่อใดจึงควรใช้ฟังก์ชัน Generators และ Lambda
เมื่อใดควรใช้เครื่องกำเนิดไฟฟ้า
- เมื่อคุณต้องการสร้างลำดับค่าจำนวนมาก แต่ไม่ต้องการจัดเก็บค่าทั้งหมดไว้ในหน่วยความจำในคราวเดียว
- เมื่อคุณต้องการวนซ้ำลำดับของค่าทีละรายการ เช่น ในไปป์ไลน์การประมวลผลข้อมูล
- เมื่อคุณต้องการสร้างลำดับของค่าที่ไม่มีที่สิ้นสุด
เมื่อใดจึงควรใช้ฟังก์ชัน Lambda
- เมื่อคุณต้องการฟังก์ชันที่เรียบง่ายเพียงครั้งเดียว
- เมื่อคุณต้องการส่งฟังก์ชันเป็นอาร์กิวเมนต์ไปยังฟังก์ชันอื่น เช่น in
แผนที่()-กรอง(), หรือเรียงลำดับ()- - เมื่อคุณต้องการเขียนโค้ดที่กระชับยิ่งขึ้น
บทสรุป
โดยสรุป ฟังก์ชั่นตัวสร้างและแลมบ์ดาเป็นสองคุณสมบัติที่ทรงพลังใน Python ที่ให้บริการตามวัตถุประสงค์ที่แตกต่างกัน ตัวสร้างได้รับการออกแบบเพื่อสร้างลำดับของค่าในช่วงเวลาหนึ่ง ในขณะที่ฟังก์ชัน lambda ได้รับการออกแบบให้เป็นฟังก์ชันบรรทัดเดียวที่เรียบง่าย การทำความเข้าใจความแตกต่างระหว่างสองแนวคิดนี้และเวลาที่ควรใช้แต่ละแนวคิดสามารถช่วยให้คุณเขียนโค้ด Python ที่มีประสิทธิภาพและกระชับมากขึ้นได้
หากคุณอยู่ในตลาดเครื่องกำเนิดไฟฟ้าคุณภาพสูง ไม่ว่าจะเป็นสำหรับที่อยู่อาศัย อาคารพาณิชย์ หรือภายนอกอาคาร เรามีตัวเลือกมากมายที่ตรงกับความต้องการของคุณ ติดต่อเราวันนี้เพื่อหารือเกี่ยวกับความต้องการของคุณและค้นหาเครื่องกำเนิดไฟฟ้าที่สมบูรณ์แบบสำหรับคุณ


อ้างอิง
- เอกสาร Python: https://docs.python.org/3/
- หลามจริง: https://realpython.com/

