ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ในฐานะโปรแกรมเมอร์ คุณอาจพบกับสถานการณ์ที่โค้ดของคุณอาจพบข้อผิดพลาดหรือข้อยกเว้น ดังนั้นการเข้าใจวิธีจัดการกับข้อผิดพลาดประเภทต่างๆ ในโค้ดของคุณจึงเป็นเรื่องสำคัญ การจัดการข้อผิดพลาดเป็นส่วนสำคัญของวงจรการเข้ารหัส วิธีทั่วไปในการจัดการข้อผิดพลาดใน Python คือการใช้เทคนิค try-except
เทคนิค การลองยกเว้น ของ Pythonประกอบด้วยบล็อกลองและบล็อกยกเว้น บล็อก try มีรหัสที่อาจสร้างข้อผิดพลาดหรือข้อยกเว้น และบล็อกยกเว้นมีรหัสเพื่อจัดการกับข้อผิดพลาดหรือข้อยกเว้นเหล่านั้น
เมื่อโค้ดของคุณทำงานโดยไม่มีปัญหาใดๆ ภายในบล็อกลอง บล็อกยกเว้นจะถูกข้ามไป อย่างไรก็ตาม หากข้อผิดพลาดหรือข้อยกเว้นเกิดขึ้นภายในบล็อกลอง โค้ดที่คุณเขียนในบล็อกยกเว้นจะดำเนินการเพื่อแก้ไขปัญหา
ในบทความนี้ เราจะพูดถึงบล็อก try-expect ของ Python ข้อผิดพลาดและข้อยกเว้นประเภทต่างๆ ที่คุณอาจพบเมื่อเขียนโค้ด และวิธีการจัดการกับข้อผิดพลาดและข้อยกเว้นเหล่านั้น
เข้าเรื่องกันเลย!
สารบัญ
ประเภทของข้อผิดพลาดใน Python คืออะไร
ใน Python ข้อผิดพลาดสามารถจำแนกได้เป็นสองประเภทหลัก:
1. ข้อผิดพลาดทางไวยากรณ์ : สิ่งเหล่านี้เรียกอีกอย่างว่าข้อผิดพลาดในการแยกวิเคราะห์ที่เกิดจากไวยากรณ์ที่ไม่ถูกต้องในรหัส ข้อผิดพลาดของไวยากรณ์ตรวจพบโดยล่าม Python และหยุดการทำงานของโปรแกรมของคุณ
ต่อไปนี้คือตัวอย่างข้อผิดพลาดทางไวยากรณ์ใน Python:
print("Hello, world!"
ในตัวอย่างนี้ วงเล็บปิดหายไป ดังนั้น Python จึงไม่เข้าใจคำสั่งนี้ ดังนั้นจึงเป็นข้อผิดพลาดทางไวยากรณ์
ข้อยกเว้น : ข้อยกเว้นเกิดขึ้นเมื่อมีสิ่งผิดปกติเกิดขึ้นระหว่างการทำงานของโปรแกรม แม้ว่าโค้ดจะถูกต้องตามไวยากรณ์ก็ตาม สิ่งเหล่านี้อาจรวมถึงข้อผิดพลาดเชิงตรรกะหรือข้อผิดพลาดรันไทม์ เช่น อินพุตไม่ถูกต้องหรือการหารด้วยศูนย์
ฟังก์ชันต่อไปนี้เป็นตัวอย่างของข้อยกเว้นใน Python:
print(5 / 0)
โค้ดบรรทัดนี้จะทำให้เกิดข้อยกเว้น ZeroDivisionError ซึ่งจะเกิดขึ้นเมื่อคุณพยายามหารตัวเลขด้วยศูนย์
ในภาพด้านบน คุณจะเห็นว่ามีข้อยกเว้นเกิดขึ้นเมื่อเราหาร 5 ด้วย 0
ตอนนี้คุณเข้าใจแล้วว่าข้อยกเว้นใดบ้างใน Python แล้ว เราจะมาดูกันว่าเราจะจัดการข้อยกเว้นด้วยคำสั่ง Try-Except ใน Python ได้อย่างไร มาดูไวยากรณ์ของบล็อก Try และ Except ใน Python ในหัวข้อถัดไป
ไวยากรณ์ของ Try and Except Block คืออะไร?
ไวยากรณ์ของฟังก์ชันจะกำหนดวิธีที่คุณควรใช้ฟังก์ชันนั้นในโค้ด รวมถึงอาร์กิวเมนต์ที่ใช้และค่าที่ส่งคืน
เราได้แสดงไวยากรณ์ของคำสั่ง try และบล็อกยกเว้น พร้อมกับ คำสั่ง elseและบล็อกสุดท้าย ด้านล่าง
1. ไวยากรณ์ของคำสั่งลอง
คำ สั่ง tryช่วยให้คุณทดสอบกลุ่มรหัสเพื่อหาข้อผิดพลาด เมื่อคุณเขียนโค้ดภายใน บล็อก ลอง Python จะดำเนินการเหมือนเป็นส่วนหนึ่งของโปรแกรมของคุณ
หากต้องการใช้ คำสั่ง tryเพียงใส่โค้ดของคุณภายใน บล็อก try :
try: # Your code here
2. ไวยากรณ์ของข้อยกเว้นข้อ
ส่วน คำสั่ง ยกเว้นจะจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการดำเนินการของบล็อกการลอง คุณสามารถระบุประเภทของข้อยกเว้นที่คุณต้องการตรวจจับหรือใช้ คำสั่ง ยกเว้น ทั่วไป เพื่อจัดการกับข้อยกเว้นทั้งหมด
ไวยากรณ์ต่อไปนี้แสดงประเภทข้อยกเว้นเฉพาะ:
try: # Your code here except ValueError: # Handle ValueError exception
ในการจัดการคลาสข้อยกเว้นโดยทั่วไปหรือหลายข้อยกเว้น คุณสามารถใช้ไวยากรณ์ที่ระบุด้านล่าง:
try: # Your code here except Exception: # Handle any exception
3. ไวยากรณ์ของ Else Clause/Block
ส่วน คำสั่ง อื่นอนุญาตให้คุณดำเนินการบล็อกรหัสเมื่อไม่มีข้อผิดพลาดในบล็อกการลอง
หากต้องการใช้ คำสั่ง อื่นคุณสามารถวางไว้หลัง บล็อก ยกเว้นที่แสดงด้านล่าง:
try: # Your code here except ValueError: # Handle ValueError exception else: # Code to execute when there are no errors
4. ไวยากรณ์ของบล็อกสุดท้าย
บล็อกสุดท้ายให้คุณรันโค้ดได้ โดยไม่คำนึงถึงผลลัพธ์ของการลองและยกเว้นบล็อก สิ่งนี้มีประโยชน์สำหรับการดำเนินการที่คุณต้องการดำเนินการไม่ว่าจะมีข้อยกเว้นเกิดขึ้นหรือไม่ก็ตาม
หากต้องการใช้ บล็อก สุดท้ายคุณสามารถวางไว้หลัง บล็อก อื่น :
try: # Your code here except ValueError: # Handle ValueError exception else: # Code to execute when there are no errors finally: # Code to execute regardless of the result of the try and except blocks
หากต้องการดูการทำงานของไวยากรณ์ข้างต้น เราจะดูตัวอย่างการจัดการข้อยกเว้นด้วยบล็อก try-except ใน Python
การจัดการข้อยกเว้นด้วย Try-Except ใน Python
เมื่อเกิดข้อผิดพลาด โดยปกติ Python จะหยุดทำงานและสร้างข้อความแสดงข้อผิดพลาด คุณสามารถจัดการข้อยกเว้นหลายรายการได้โดยใช้บล็อกการลองและยกเว้น
ในตัวอย่างด้านล่าง เราจัดการกับข้อผิดพลาดการหารด้วยศูนย์ที่สร้างขึ้นก่อนหน้านี้เมื่อเราหาร 5 ด้วย 0
try: print(5 / 0) except ZeroDivisionError: print("You can't divide by zero!")
ในโค้ดนี้ มีข้อยกเว้นเกิดขึ้น แต่โปรแกรมจะทำงานต่อไปและพิมพ์ข้อความว่า “คุณไม่สามารถหารด้วยศูนย์ได้!” แทนที่จะหยุดด้วยข้อผิดพลาด
การใช้ บล็อก แบบลองและข้อยกเว้นช่วยให้คุณควบคุมโฟลว์ของโปรแกรมได้ ด้วยการจัดการ ข้อยกเว้นเฉพาะคุณสามารถให้ข้อเสนอแนะที่เป็นประโยชน์กับผู้ใช้ และทำให้โปรแกรมของคุณทำงานต่อไปได้เมื่อเกิดข้อผิดพลาดขึ้น
ในตัวอย่างด้านบน คุณจะเห็นว่าเราใช้ข้อยกเว้นในตัว ZeroDivisionError เพื่อจัดการกับกรณี ในทำนองเดียวกันนี้มีข้อยกเว้นในตัวประเภทอื่นเช่นกัน
ความคุ้นเคยกับประเภทข้อยกเว้นเหล่านี้จะช่วยให้คุณตัดสินใจได้ว่าจะใช้ความคาดหวังใดเมื่อคุณพบข้อผิดพลาดในโค้ด Python ดังนั้น มาดูข้อยกเว้นบางส่วนในหัวข้อถัดไป
ข้อยกเว้นในตัวประเภทใดบ้าง
ใน Python ข้อยกเว้นคืออินสแตนซ์ของคลาสที่ได้รับมาจากคลาส BaseException เมื่อตรวจพบข้อผิดพลาด Python จะทำการยกเว้น มีข้อยกเว้นในตัวหลายอย่างที่คุณน่าจะพบขณะเขียนโปรแกรมด้วย Python
มาดูตัวอย่างที่พบบ่อยที่สุดกัน:
ZeroDivisionError:สิ่งนี้เกิดขึ้นเมื่อคุณพยายามหารตัวเลขด้วยศูนย์
NameError:สิ่งนี้จะเกิดขึ้นเมื่อคุณพยายามใช้ตัวแปรหรือฟังก์ชันที่ไม่ได้กำหนดไว้
ValueError : เกิดขึ้นเมื่อคุณส่งอาร์กิวเมนต์ประเภทที่ถูกต้องแต่มีค่าที่ไม่ถูกต้อง
TypeError : สิ่งนี้เกิดขึ้นเมื่อคุณส่งอาร์กิวเมนต์ประเภทข้อมูลที่ไม่ถูกต้อง
FileNotFoundError : เกิดขึ้นเมื่อคุณพยายามเปิดหรือเข้าถึงไฟล์ที่ไม่มีอยู่
ImportError : เกิดขึ้นเมื่อคุณพยายามนำเข้าโมดูลหรือแพ็คเกจที่ไม่มีอยู่หรือไม่พบ
ข้อยกเว้นที่เกี่ยวข้องอื่นๆ ได้แก่:
OverflowError:ข้อผิดพลาดนี้เกิดขึ้นเมื่อผลการคำนวณใหญ่เกินกว่าจะแสดงได้
FloatingPointError:สิ่งนี้จะเกิดขึ้นเมื่อการดำเนินการของจุดลอยตัวล้มเหลว
IndexError:เกิดขึ้นเมื่อคุณพยายามเข้าถึงดัชนีที่อยู่นอกช่วงของลำดับ (เช่น รายการหรือทูเพิล)
KeyError:เกิดขึ้นเมื่อคุณพยายามเข้าถึงคีย์ที่ไม่มีอยู่ในพจนานุกรม
EOFError:เกิดขึ้นเมื่อ Python พบจุดสิ้นสุดของไฟล์ (EOF) ขณะอ่านอินพุต โดยปกติจะมาจากการเรียก read()
ArithmeticError:ซูเปอร์คลาสสำหรับข้อยกเว้นทางคณิตศาสตร์ เช่น ZeroDivisionError, OverflowError และ FloatingPointError
บางครั้ง อาจจำเป็นต้องใช้ข้อยกเว้นที่ผู้ใช้กำหนด เช่น คำสั่ง passในบล็อกที่คาดว่าจะมีข้อยกเว้น ควรทำอย่างรอบคอบเนื่องจากอาจระงับข้อยกเว้นอื่นๆ
เราได้จัดเตรียมรายการข้อผิดพลาดของข้อยกเว้นทั่วไปไว้ข้างต้น เพื่อให้คุณสามารถใช้เป็น แนวทางในการจัดการกับข้อยกเว้นที่เป็นไปได้เมื่อเขียน โปรแกรมPython ของคุณ
โปรดทราบว่าข้อยกเว้นส่วนใหญ่สามารถตรวจจับและจัดการได้ แต่ควรใช้ความระมัดระวังในการจัดการกับการโทรครั้งล่าสุดเพื่อหลีกเลี่ยงการจัดการกรณียกเว้นอื่นๆ ที่ซ้อนกัน
ในหัวข้อถัดไป เราจะดูกรณีการใช้งานของบล็อก try-except ใน Python เข้าเรื่องกันเลย!
5 กรณีการใช้งานของ Try-Except Block
การบล็อกการลองยกเว้นเป็นหนึ่งในเทคนิคที่ใช้กันอย่างแพร่หลายในการจัดการข้อผิดพลาด ต่อไปนี้คือกรณีการใช้งานบางส่วนของบล็อก Try Except ใน Python:
1. การจัดการไฟล์ด้วยการลองยกเว้น
เมื่อทำงานกับไฟล์ มีโอกาสเสมอที่ไฟล์จะไม่มีอยู่หรือไม่อยู่ในตำแหน่งที่สคริปต์ของคุณพยายามเข้าถึง
รหัสต่อไปนี้จะเพิ่มข้อยกเว้นเมื่อเราพยายามเปิดไฟล์ที่ไม่มีอยู่
try: with open('file.txt', 'r') as file: print(file.read()) except FileNotFoundError: print('Sorry, this file does not exist.')
ในโค้ดนี้ เรากำลังพยายามเปิดและอ่านไฟล์ชื่อ 'file.txt' หากไม่มี 'file.txt' จะเกิดข้อยกเว้น แต่แทนที่ข้อผิดพลาดจะหยุดโปรแกรมของคุณ โปรแกรมจะพิมพ์ว่า 'ขออภัย ไม่มีไฟล์นี้อยู่'
2. จัดการอินพุตของผู้ใช้ด้วยการลองยกเว้น
การป้อนข้อมูลของผู้ใช้เป็นอีกพื้นที่หนึ่งที่มักเกิดข้อยกเว้น ผู้ใช้อาจให้ข้อมูลในรูปแบบที่ไม่คาดคิด หรือป้อนข้อมูลที่อยู่นอกขอบเขตที่ยอมรับได้
ตัวอย่างต่อไปนี้แสดงวิธีจัดการอินพุตของผู้ใช้ด้วยบล็อก try-except:
try: age = int(input("Enter your age: ")) except ValueError: print("That's not a valid age. Please enter a number.")
ในรหัสนี้ เราขอให้ผู้ใช้ป้อนอายุ หากป้อนสิ่งที่ไม่สามารถแปลงเป็นจำนวนเต็มได้ (เช่น คำหรือตัวอักษร) จะเกิดข้อยกเว้น แต่แทนที่โปรแกรมจะหยุดทำงาน โปรแกรมจะพิมพ์ว่า 'อายุไม่ถูกต้อง' กรุณากรอกตัวเลข'
3. การเข้าถึงคีย์พจนานุกรมที่ไม่มีอยู่จริง
ใน Python พจนานุกรมคือชุดของคู่คีย์-ค่า ที่ไม่แน่นอนและไม่ เรียงลำดับ ซึ่งแต่ละคีย์ต้องไม่ซ้ำกัน
เมื่อคุณพยายามเข้าถึงคีย์ที่ไม่มีอยู่ในพจนานุกรม Python จะแสดง KeyError คุณสามารถใช้การลองและยกเว้นเพื่อจัดการข้อยกเว้นนี้ตามที่แสดงในตัวอย่างด้านล่าง:
dictionary = {"key1": "value1", "key2": "value2"} try: print(dictionary["key3"]) except KeyError: print("The key does not exist in the dictionary.")
ในโค้ดนี้ คุณกำลังพยายามพิมพ์ค่าสำหรับ 'key3' จากพจนานุกรม หากไม่มี 'key3' ในพจนานุกรม จะเกิดข้อยกเว้น แต่แทนที่โปรแกรมจะหยุดโดยมีข้อผิดพลาด โปรแกรมจะพิมพ์ว่า 'ไม่มีคีย์นี้อยู่ในพจนานุกรม'
4. การแปลงสตริงเป็นจำนวนเต็ม
อาจมีบางครั้งที่คุณต้องการแปลงสตริงเป็นจำนวนเต็ม แต่ถ้าสตริงไม่แสดงจำนวนเต็มที่ถูกต้อง Python จะเพิ่ม ValueError
คุณสามารถใช้การลองและยกเว้นเพื่อจัดการกับกรณีนี้:
try: num = int("hello") except ValueError: print("That string can't be converted to integer.")
ในกรณีนี้ 'hello' ไม่สามารถแปลงเป็นจำนวนเต็มได้ ดังนั้น Python จึงเพิ่ม ValueError และพิมพ์ 'That string can't be Converted to integer'
5. การนำเข้าโมดูล
เมื่อนำเข้าโมดูลใน Pythonอาจเป็นไปได้ว่าโมดูลนั้นไม่มีอยู่หรือไม่ได้ติดตั้งไว้ Python จะเพิ่ม ImportError ในกรณีดังกล่าว
ในการจัดการกรณีนี้ คุณสามารถใช้รหัสต่อไปนี้:
try: import some_module except ImportError: print("The module 'some_module' is not installed.")
ในตัวอย่างด้านบน หากไม่ได้ติดตั้ง 'some_module' หรือไม่มีอยู่ Python จะเพิ่ม ImportError และพิมพ์ 'The module 'some_module' is not installed'
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Python และการจัดการความคาดหวัง โปรดดูวิดีโอต่อไปนี้:
ต่อไป เราจะดูแนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการข้อยกเว้น มาดำน้ำกันเถอะ!
แนวทางปฏิบัติที่ดีที่สุดในการจัดการข้อยกเว้น
ในส่วนนี้ เราได้แสดงแนวทางปฏิบัติที่ดีที่สุดบางประการสำหรับการจัดการข้อยกเว้นด้วยบล็อก Try Except แนวทางปฏิบัติที่ดีที่สุดบางประการสำหรับการจัดการข้อยกเว้นคือ:
1. เจาะจงด้วยข้อยกเว้น
เมื่อคุณเขียนโค้ด การจับข้อยกเว้นให้เจาะจงที่สุดเท่าที่จะเป็นไปได้เป็นสิ่งสำคัญ ซึ่งหมายความว่า แทนที่จะจับชื่อข้อยกเว้นทั่วไป คุณควรจับประเภทของข้อยกเว้นจริงที่คุณคาดหวัง
ด้วยวิธีนี้ คุณจะทราบได้อย่างแน่ชัดว่าเกิดข้อผิดพลาดประเภทใด และคุณจะสามารถจัดการกับปัญหาได้อย่างเหมาะสม
2. อย่าระงับข้อยกเว้น
เมื่อคุณจัดการกับข้อยกเว้น คุณอาจถูกล่อลวงให้จับมันด้วยตัวจัดการข้อยกเว้นและไม่ทำอะไรกับมัน นี่เป็นความคิดที่ไม่ดี
หากเกิดข้อผิดพลาดขึ้น ก็มักจะเป็นเพราะมีบางสิ่งที่ต้องแก้ไข หากคุณระงับคลาสข้อยกเว้น ข้อผิดพลาดอาจไม่มีใครสังเกตเห็นและทำให้เกิดปัญหาในภายหลัง
3. ใช้ในที่สุดสำหรับการล้างรหัส
บางครั้ง คุณมีโค้ดบางอย่างที่ต้องเรียกใช้โดยไม่คำนึงว่าจะเกิดข้อผิดพลาดหรือไม่ นี่อาจเป็นเช่นการปิดไฟล์หรือปล่อยทรัพยากรบางอย่าง
ในกรณีเหล่านี้ คุณสามารถใช้บล็อกสุดท้ายได้ โค้ดภายใน บล็อก สุดท้ายจะทำงานไม่ว่าจะเกิดอะไรขึ้น ดังนั้นจึงเป็นที่ที่ดีในการใส่โค้ดล้างข้อมูลของคุณ
try: # Some code here finally: # This code will run no matter what
4. เพิ่มข้อยกเว้นเมื่อจำเป็น
อาจมีสถานการณ์ที่คุณต้องแจ้งให้ผู้ใช้รหัสของคุณทราบว่ามีบางอย่างผิดพลาด
ในกรณีเหล่านี้ คุณสามารถแจ้งข้อยกเว้นได้ วิธีนี้จะหยุดการดำเนินการโค้ดของคุณทันทีและแจ้งให้ผู้ใช้ทราบว่ามีข้อผิดพลาดเกิดขึ้น
if not valid_input: raise ValueError("Your input was not valid!")
การทำความเข้าใจและนำแนวทางปฏิบัติที่ดีที่สุดเหล่านี้ไปใช้จะทำให้โค้ดของคุณแข็งแกร่งขึ้น แก้ไขจุดบกพร่องได้ง่ายขึ้น และป้องกันข้อขัดข้องที่ไม่คาดคิด
ความคิดสุดท้าย
ในการสรุป การรู้วิธีใช้การลองและยกเว้นใน Python ช่วยได้จริงๆ เมื่อคุณเขียนโค้ดและพบข้อยกเว้นในนั้น
ช่วยให้โปรแกรมของคุณจัดการกับข้อผิดพลาดได้อย่างราบรื่น แทนที่จะหยุดกะทันหัน เป็นวิธีการทำให้แน่ใจว่าโค้ดของคุณสามารถจัดการกับสิ่งที่น่าประหลาดใจและดำเนินต่อไปได้
นอกจากนี้ เมื่อคุณใช้การลองและยกเว้น แสดงว่าคุณกำลังคิดถึงสิ่งที่อาจผิดพลาดและเตรียมพร้อมสำหรับมัน ดังนั้น จงใช้เวลาเรียนรู้เครื่องมือเหล่านี้ — เครื่องมือเหล่านี้มีประโยชน์อย่างยิ่งเมื่อคุณเขียนโค้ดใน Python!
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates
ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก
บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ
ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น
ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร
เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates
บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์
หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ
เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้