วิธีการใช้ฟังก์ชั่น 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 ถือเป็นโครงสร้างข้อมูลที่ดีที่สุดในการจัดเก็บข้อมูลในสถานการณ์ต่อไปนี้ - รายการสามารถใช้เพื่อจัดเก็บค่าต่างๆ ด้วยประเภทข้อมูลที่แตกต่างกัน และสามารถเข้าถึงได้โดยดัชนีที่เกี่ยวข้องเท่านั้น เมื่อคุณต้องการดำเนินการทางคณิตศาสตร์กับองค์ประกอบต่างๆ คุณสามารถใช้รายการได้ เนื่องจากจะช่วยให้คุณดำเนินการองค์ประกอบทางคณิตศาสตร์ได้โดยตรง เนื่องจากรายการสามารถปรับขนาดได้ จึงสามารถใช้เพื่อจัดเก็บข้อมูลเมื่อคุณไม่แน่ใจเกี่ยวกับจำนวนองค์ประกอบที่จะจัดเก็บ องค์ประกอบของรายการสามารถเปลี่ยนแปลงได้ง่ายและยังสามารถจัดเก็บองค์ประกอบที่ซ้ำกัน ซึ่งแตกต่างจากชุดและพจนานุกรม