วิธีการใช้ฟังก์ชั่น Switch Case ใน Python? [2022]
เผยแพร่แล้ว: 2021-01-08สารบัญ
บทนำ
คุณเคยสงสัยหรือไม่ว่ามีทางเลือกอื่นในการเขียนคำสั่ง if-else ที่ซับซ้อนเหล่านั้นใน Python หรือไม่? ถ้าคุณไม่ต้องการให้คำสั่ง 'If' หลายคำสั่งทำให้โค้ดของคุณยุ่งเหยิง คุณควรพิจารณาใช้คำสั่ง Switch case ที่ให้วิธีที่สะอาดกว่าและเร็วกว่าในการปรับใช้โฟลว์การควบคุมในโค้ดของคุณ ไม่เหมือนกับ C++, Java, Ruby และภาษาการเขียนโปรแกรมอื่นๆ Python ไม่มีคำสั่ง switch case แต่มีวิธีแก้ปัญหาเล็กน้อยเพื่อให้คำสั่งนี้ใช้งานได้
ตัวอย่างเช่น Python ช่วยให้คุณสร้างข้อมูลโค้ดที่ทำงานเหมือน คำสั่ง กรณี Python Switch ในภาษาการเขียนโปรแกรมอื่นๆ คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับวิธีการใช้คำสั่ง switch-case ในภายหลังในบล็อกนี้ หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับไพ ธ อน โปรดดูหลักสูตรวิทยาศาสตร์ข้อมูลของเรา
คำสั่ง Switch ใน Python คืออะไร?
โดยทั่วไป สวิตช์เป็นกลไกควบคุมที่ทดสอบค่าที่เก็บไว้ในตัวแปรและดำเนินการคำสั่ง case ที่เกี่ยวข้อง คำสั่ง Switch case จะแนะนำโฟลว์การควบคุมในโปรแกรมของคุณ และทำให้แน่ใจว่าโค้ดของคุณจะไม่เกะกะด้วยคำสั่ง 'if' หลายคำสั่ง
ดังนั้นโค้ดของคุณจึงดูพิถีพิถันและโปร่งใสสำหรับผู้ดู เป็นคุณลักษณะการเขียนโปรแกรมที่ยอดเยี่ยมที่โปรแกรมเมอร์ใช้ในการปรับใช้โฟลว์การควบคุมในโค้ดของตน คำสั่ง Switch case ทำงานโดยการเปรียบเทียบค่าที่ระบุในคำสั่ง case กับตัวแปรในโค้ดของคุณ
วิธีการใช้ Python Switch Case Statement
หากคุณเคยเขียนโค้ดในภาษาเช่น C++ หรือ Java มาโดยตลอด คุณอาจพบว่ามันแปลกที่ Python ไม่มีคำสั่ง switch case แต่ Python เสนอวิธีแก้ปัญหาชั่วคราวมากมาย เช่น พจนานุกรม คลาส Python หรือฟังก์ชันแลมบ์ดาของ Python เพื่อใช้คำสั่ง switch-case
หากคุณต้องการทราบสาเหตุที่แท้จริงที่ไม่มีคำสั่ง switch case ใน python คุณควรตรวจสอบ PEP 3103
ก่อนลงลึกถึงทางเลือกเหล่านี้ ให้เราดูก่อนว่าโดยทั่วไปแล้วฟังก์ชันเคสสวิตช์ทำงานอย่างไรในภาษาโปรแกรมอื่นๆ
ในตัวอย่างด้านล่าง เราได้ใช้ภาษาการเขียนโปรแกรม C
สวิตช์ (เดือนปี) { กรณีที่ 1: printf(“%s”, มกราคม); หยุดพัก; กรณีที่ 2: printf(“%s”, กุมภาพันธ์); หยุดพัก; กรณีที่ 3: printf(“%s” มีนาคม); หยุดพัก; กรณีที่ 4: printf(“%s” เมษายน); หยุดพัก; กรณีที่ 5: printf(“%s” พฤษภาคม); หยุดพัก; กรณีที่ 6: printf(“%s”, มิถุนายน); หยุดพัก; กรณีที่ 7: printf(“%s” กรกฎาคม); หยุดพัก; กรณีที่ 8: printf(“%s” สิงหาคม); หยุดพัก; กรณีที่ 9: printf(“%s”, กันยายน); หยุดพัก; กรณีที่ 10: printf(“%s”, ตุลาคม); หยุดพัก; กรณีที่ 11: printf(“%s” พฤศจิกายน); หยุดพัก; กรณีที่ 12: printf(“%s”, ธันวาคม); หยุดพัก; ค่าเริ่มต้น: printf("เดือนที่ไม่ถูกต้อง"); หยุดพัก; } |
ตอนนี้ ให้เราไปต่อใน Python switch case function ทางเลือก และทำความเข้าใจว่าทางเลือกเหล่านี้ทำงานอย่างไรด้วยความช่วยเหลือจากตัวอย่าง
อ่าน: โอกาสในการทำงานในภาษา Python: ทุกสิ่งที่คุณต้องการรู้
การใช้การทำแผนที่พจนานุกรม
หากคุณคุ้นเคยกับภาษาการเขียนโปรแกรมอื่นๆ คุณต้องรู้ว่าพจนานุกรมใช้คู่คีย์-ค่าเพื่อจัดเก็บกลุ่มของอ็อบเจ็กต์ในหน่วยความจำ เมื่อคุณใช้พจนานุกรมเป็นทางเลือกแทนคำสั่ง switch-case คีย์ของคู่คีย์-ค่าจะทำงานเป็น case
ตัวอย่างต่อไปนี้แสดงการใช้งานคำสั่ง switch case โดยใช้พจนานุกรม ที่นี่เรากำลังกำหนดฟังก์ชัน month() เพื่อพิมพ์ว่าเดือนใดเป็นเดือนของปี
ขั้นแรก เริ่มต้นด้วยการสร้างคำสั่งของเคสและเขียนฟังก์ชันแต่ละรายการสำหรับแต่ละเคส ตรวจสอบให้แน่ใจว่าคุณเขียนฟังก์ชันที่จัดการกับกรณีเริ่มต้น
def มกราคม (): กลับ “มกราคม” def กุมภาพันธ์ (): กลับ “กุมภาพันธ์” def มีนาคม (): กลับ "มีนาคม" def เมษายน (): กลับ “เมษายน” def อาจ (): กลับ "อาจ" def มิถุนายน (): กลับ “มิถุนายน” def กรกฎาคม (): กลับ “กรกฎาคม” วันที่สิงหาคม (): กลับ "สิงหาคม" def กันยายน (): กลับ “กันยายน” def ตุลาคม (): กลับ “ตุลาคม” def พฤศจิกายน (): กลับ “พฤศจิกายน” def ธันวาคม (): กลับ “ธันวาคม” def เริ่มต้น (): ส่งคืน "เดือนที่ไม่ถูกต้อง" |
ถัดไป สร้างอ็อบเจ็กต์พจนานุกรมใน Python และเก็บฟังก์ชันทั้งหมดที่คุณกำหนดไว้ในโปรแกรมของคุณ
ตัวสลับ = { 0: 'มกราคม', 1: 'กุมภาพันธ์', 2: 'มีนาคม', 3: 'เมษายน', 4: 'อาจ', 5: 'มิถุนายน', 6: 'กรกฎาคม', 7: 'สิงหาคม', 8: 'กันยายน', 9: 'ตุลาคม', 10: 'พฤศจิกายน', 11: 'ธันวาคม' } |
สุดท้าย สร้างฟังก์ชันสวิตช์ในโปรแกรมของคุณที่ควรยอมรับจำนวนเต็มเป็นอินพุต ดำเนินการค้นหาพจนานุกรม และเรียกใช้ฟังก์ชันที่เกี่ยวข้อง
เดือน def (เดือนของปี): return switcher.get(monthOfYear ค่าเริ่มต้น)() |
โค้ดที่สมบูรณ์จะมีลักษณะดังนี้
def มกราคม (): กลับ “มกราคม” def กุมภาพันธ์ (): กลับ “กุมภาพันธ์” def มีนาคม (): กลับ "มีนาคม" def เมษายน (): กลับ “เมษายน” def อาจ (): กลับ "อาจ" def มิถุนายน (): กลับ “มิถุนายน” def กรกฎาคม (): กลับ “กรกฎาคม” ![]() วันที่สิงหาคม (): กลับ "สิงหาคม" def กันยายน (): กลับ “กันยายน” def ตุลาคม (): กลับ “ตุลาคม” def พฤศจิกายน (): กลับ “พฤศจิกายน” def ธันวาคม (): กลับ “ธันวาคม” def เริ่มต้น (): ส่งคืน "เดือนที่ไม่ถูกต้อง"
ตัวสลับ = { 0: 'มกราคม', 1: 'กุมภาพันธ์', 2: 'มีนาคม', 3: 'เมษายน', 4: 'อาจ', 5: 'มิถุนายน', 6: 'กรกฎาคม', 7: 'สิงหาคม', 8: 'กันยายน', 9: 'ตุลาคม', 10: 'พฤศจิกายน', 11: 'ธันวาคม' } เดือน def (เดือนของปี): return switcher.get(monthOfYear ค่าเริ่มต้น)() พิมพ์(สวิตช์(1)) พิมพ์(สวิตช์(0)) |
รหัสด้านบนพิมพ์ผลลัพธ์ต่อไปนี้
กุมภาพันธ์ มกราคม |
อ่านเพิ่มเติม: 42 แนวคิดและหัวข้อโครงการ Python ที่น่าตื่นเต้นสำหรับผู้เริ่มต้น
การใช้คลาส Python
คุณยังสามารถใช้คลาส Python เป็นทางเลือกแทนการใช้คำสั่ง switch-case คลาสเป็นตัวสร้างวัตถุที่มีคุณสมบัติและวิธีการ ให้เราเข้าใจสิ่งนี้เพิ่มเติมด้วยความช่วยเหลือของตัวอย่างข้างต้น ที่นี่ เราจะกำหนดวิธีการสลับภายในคลาสสวิตช์ Python
ตัวอย่าง
อันดับแรก เราจะกำหนดวิธีการสลับภายในคลาสสวิตช์ Python ที่ใช้เวลาหนึ่งเดือนของปีเป็นอาร์กิวเมนต์ แปลงผลลัพธ์เป็นสตริง
คลาส PythonSwitch: เดือน def (ตัวเอง, เดือนของปี): ค่าเริ่มต้น = “เดือนไม่ถูกต้อง” ส่งคืน getattr(ตัวเอง 'case_' + str(monthOf Year), lambda: default)() |
หมายเหตุ: ในตัวอย่างข้างต้น เราใช้สองสิ่ง: คีย์เวิร์ด lambda และ getattr() method
- เราใช้คีย์เวิร์ดแลมบ์ดาเพื่อกำหนดฟังก์ชันนิรนามใน Python คีย์เวิร์ด Lambda เรียกใช้ฟังก์ชันเริ่มต้นเมื่อผู้ใช้ป้อนข้อมูลที่ไม่ถูกต้อง
- เมธอด getattr() ใช้เพื่อเรียกใช้ฟังก์ชันใน Python
ตอนนี้ สร้างฟังก์ชันเฉพาะสำหรับแต่ละกรณี
def มกราคม (ตัวเอง): กลับ “มกราคม”
def กุมภาพันธ์ (ตัวเอง): กลับ “กุมภาพันธ์” def มีนาคม (ตัวเอง): กลับ “มีนาคม”
def เมษายน (ตัวเอง): กลับ “เมษายน”
def อาจ (ตัวเอง): กลับ "พฤษภาคม"
def มิถุนายน (ตัวเอง): กลับ “มิถุนายน” def กรกฎาคม (ตัวเอง): กลับ “กรกฎาคม”
def สิงหาคม (ตัวเอง): กลับ “สิงหาคม”
def กันยายน (ตัวเอง): กลับ “กันยายน” def ตุลาคม (ตัวเอง): กลับ “ตุลาคม”
def พฤศจิกายน (ตัวเอง): กลับ “พฤศจิกายน”
def ธันวาคม (ตัวเอง): กลับ “ธันวาคม” |
โค้ดที่สมบูรณ์จะมีลักษณะดังนี้
คลาส PythonSwitch: เดือน def (ตัวเอง, เดือนของปี): ค่าเริ่มต้น = “เดือนไม่ถูกต้อง” ส่งคืน getattr(ตัวเอง 'case_' + str(monthOf Year), lambda: default)() def มกราคม (ตัวเอง): กลับ “มกราคม”
def กุมภาพันธ์ (ตัวเอง): กลับ “กุมภาพันธ์”
def มีนาคม (ตัวเอง): กลับ “มีนาคม”
def เมษายน (ตัวเอง): กลับ “เมษายน”
def อาจ (ตัวเอง): กลับ "พฤษภาคม"
def มิถุนายน (ตัวเอง): กลับ “มิถุนายน” def กรกฎาคม (ตัวเอง): กลับ “กรกฎาคม”
def สิงหาคม (ตัวเอง): กลับ “สิงหาคม”
def กันยายน (ตัวเอง): กลับ “กันยายน” def ตุลาคม (ตัวเอง): กลับ “ตุลาคม”
def พฤศจิกายน (ตัวเอง): กลับ “พฤศจิกายน”
def ธันวาคม (ตัวเอง): กลับ “ธันวาคม” my_switch = PythonSwitch () พิมพ์ (my_switch.month(1)) พิมพ์ (my_switch.month(10)) |
รหัสด้านบนพิมพ์ผลลัพธ์ต่อไปนี้
มกราคม ตุลาคม |
ชำระเงิน: เงินเดือนนักพัฒนา Python ในอินเดีย
บทสรุป
ในบล็อกนี้ คุณได้เรียนรู้เกี่ยวกับคำสั่ง switch-case, อะไรคือทางเลือกของคำสั่ง switch-case และวิธีการใช้ ตามที่อธิบายไว้ข้างต้น Python ไม่มีฟังก์ชันเคสสวิตช์ในตัว แต่คุณสามารถใช้ทางเลือกเหล่านี้เพื่อทำให้โค้ดของคุณดูเรียบร้อยและสะอาดตา และได้รับประสิทธิภาพที่ดีขึ้น
หากคุณอยากเรียนรู้เกี่ยวกับวิทยาศาสตร์ข้อมูล ลองดูโปรแกรม Executive PG ของ IIIT-B & upGrad ใน Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 10 รายการ เวิร์กช็อปภาคปฏิบัติจริง การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม 1 -on-1 พร้อมที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
แยกความแตกต่างระหว่างพจนานุกรมธรรมดาและพจนานุกรม Python
Python Dictionary หรือ "Dict" เป็นโครงสร้างข้อมูล inbuilt ของ Python ที่ใช้ในการเก็บคอลเลกชันขององค์ประกอบที่ไม่เรียงลำดับ โครงสร้างข้อมูลพจนานุกรมไม่เหมือนกับโครงสร้างข้อมูล Python อื่นๆ ที่เก็บค่าเดียว โครงสร้างข้อมูลพจนานุกรมเก็บคู่คีย์-ค่าโดยที่ทุกคีย์ไม่ซ้ำกัน ไม่จำลำดับการแทรกของคู่คีย์-ค่าและวนซ้ำผ่านคีย์ ในทางกลับกัน Ordered Dictionary หรือ OrderedDict จะคอยติดตามลำดับการแทรกของคู่คีย์-ค่า นอกจากนี้ยังใช้หน่วยความจำมากกว่าพจนานุกรมทั่วไปใน Python เนื่องจากมีการใช้งานรายการที่มีการเชื่อมโยงแบบทวีคูณ หากคุณลบและใส่คีย์เดิมเข้าไปใหม่ คีย์ดังกล่าวจะถูกแทรกในตำแหน่งเดิมเนื่องจาก OrderedDict จะจดจำลำดับการแทรก
การดำเนินการใดของ namedtuple ที่ทำให้เป็นตัวเลือกที่สะดวกสำหรับกรณีสวิตช์
namedtuple ใน Python ดำเนินการต่างๆ ต่อไปนี้คือรายการของการดำเนินการทั่วไปบางส่วนที่ดำเนินการโดย namedtuple องค์ประกอบใน namedtuple สามารถเข้าถึงได้โดยดัชนีซึ่งแตกต่างจากพจนานุกรม วิธีอื่นในการเข้าถึงองค์ประกอบคือการใช้ชื่อคีย์ ฟังก์ชัน make() ส่งคืนค่า namedtuple ฟังก์ชัน _asadict() ส่งคืนพจนานุกรมที่เรียงลำดับซึ่งสร้างขึ้นจากค่าที่แมป ฟังก์ชัน _replace() ใช้ชื่อคีย์เป็นอาร์กิวเมนต์และเปลี่ยนค่าที่แมปกับคีย์ดังกล่าว ฟังก์ชัน _fileds() ส่งคืนชื่อคีย์ทั้งหมดของ namedtuple ที่กำหนด
เราต้องการรายการสำหรับจัดเก็บข้อมูลเมื่อใด
รายการ Python ถือเป็นโครงสร้างข้อมูลที่ดีที่สุดในการจัดเก็บข้อมูลในสถานการณ์ต่อไปนี้ - รายการสามารถใช้เพื่อจัดเก็บค่าต่างๆ ด้วยประเภทข้อมูลที่แตกต่างกัน และสามารถเข้าถึงได้โดยดัชนีที่เกี่ยวข้องเท่านั้น เมื่อคุณต้องการดำเนินการทางคณิตศาสตร์กับองค์ประกอบต่างๆ คุณสามารถใช้รายการได้ เนื่องจากจะช่วยให้คุณดำเนินการองค์ประกอบทางคณิตศาสตร์ได้โดยตรง เนื่องจากรายการสามารถปรับขนาดได้ จึงสามารถใช้เพื่อจัดเก็บข้อมูลเมื่อคุณไม่แน่ใจเกี่ยวกับจำนวนองค์ประกอบที่จะจัดเก็บ องค์ประกอบของรายการสามารถเปลี่ยนแปลงได้ง่ายและยังสามารถจัดเก็บองค์ประกอบที่ซ้ำกัน ซึ่งแตกต่างจากชุดและพจนานุกรม