Skip to main content
Programming LanguagePython

เบื่อแล้ว Debug โค้ดด้วย Print หันมาใช้ไอติมดูบ้างดีกว่า

สำหรับเพื่อน ๆ ที่เขียนโปรแกรม Python มาถึงทุกวันนี้ หากคุณกำลังเบื่อในการใช้ Print ในการ Debug Code อยู่ละก็ วันนี้แอดมินจะมาแนะนำให้ทุกคนลองใช้ ไอติม ในการ Debug โค้ดของพวกเราดูบ้าง (นอกจากคุยกับเป็ดยางจนเพื่อนร่วมงานกลัวแล้ว หวานเย็นแสนอร่อยก็สามารถ Debug ได้ด้วยอย่างนั้นรึ หน่านิ๊ !!!)

ซึ่งไอติมที่ว่านี้ ไม่ใช่หวานเย็นสุดแสนอร่อยแต่อย่างใด แต่มันคือ Python Library ที่ออกแบบมาเพื่อใช้ Debug โดยเฉพาะเลย จะมีเนื้อหาเป็นอย่างไรบ้างนั้น ไปดูกันเลยยย !!!

เขียนโดย Natakorn Hongharn -BorntoDev Co., Ltd.

ที่ผ่านมา โดยปกติแล้วแอดจะชอบใช้ Print ในการ Debug บ่อยมากกก ซึ่งบางทีเวลาทำงานเสร็จแล้วต้องมาคอยไล่เช็คลบ Print ที่แอดไว้ใช้ Debug ออก ดีไม่ดีไปลบอันที่แอดจะไว้ใช้แสดงผลต่างหากเอง T^T

ซึ่งโดยปกติแล้ว เวลาจะ Debug ด้วย Print แอดจะทำประมาณนี้:

num1 = 44
num2 = 112

print(num1)
print(num2)

ผลลัพธ์ที่ได้ก็คือ:

44
112

จากที่เห็น เราจะไม่สามารถรู้ได้เลยว่า ค่าที่แสดงออกมานั้น คือค่าของตัวแปร num1 หรือ num2 กันแน่ (ถ้าเราไม่รู้ว่าเขียนเรียงเป็นลำดับ)

เพราะฉะนั้นเราจำเป็นต้องเขียนบอกไว้ด้วยว่า นี่เป็นค่าของตัวแปรอะไร:

num1 = 44
num2 = 112 

print('num1', num1)
print('num2', num2)

ผลลัพธ์ที่ได้คือ:

num1 30
num2 40

จะเห็นได้ว่ามันดูดีขึ้นเยอะเลย แต่ลองคิดภาพตอนเราต้องมานั่งใส่ชื่อตัวแปร ทุกครั้งที่เราจะ Debug ดูสิ (อ๊าาา มันเยอะเสียรึเกินนน !!!)

ทีนี้ก็ถึงเวลาเฉิดฉายของไอติมเราแล้ว ซึ่งถ้าแอดใช้เจ้าไอติมนี้มา Debug จะได้แบบนี้:

num1 = 44
num2 = 112 

ic(num1)
ic(num2)

ผลลัพธ์ที่ได้ก็คือ:

ic| num1: 44
ic| num2: 112

จะเห็นได้ว่า ปังสุด ๆ !!!

แล้วไอติมที่พูด ๆ มานี่ สรุปแล้วมันคืออะไรล่ะ ??

Icecream คือ Python Library หนึ่งที่ถูกออกแบบมาเพื่อใช้สำหรับการทำ Debugging ที่จะแสดงผลลัพธ์ออกมาให้ชาวเดฟอย่างเราอ่านได้อย่างง่ายดาย

สำหรับวิธีการติดตั้งก็ทำได้ตามนี้เลย:

$ pip install icecream

ทีนี้เรามาลอง Debug เจ้าตัว Python Function กันดูบ้างดีกว่า

from icecream import ic 

def plus_one(num):
    return num + 1

ic(plus_one(12))
ic(plus_one(13))

ผลลัพธ์ที่ได้:

ic| plus_one(12): 13
ic| plus_one(13): 14

สำหรับเจ้า ic แล้ว เราจะไม่ได้แค่เห็นเพียงแค่ Output ออกมาเท่านั้น เราจะสามารถเห็น Function และค่าที่ใส่เข้าไปใน Argument ได้ด้วย

นอกจากใช้ในการตรวจสอบค่าต่าง ๆ แล้ว เราสามารถใช้เช็คว่าโค้ดได้ไปรันในส่วนไหน (ตรวจสอบการดำเนินการ) ได้ด้วยนะ

from icecream import ic

def hello_Too(พร้อมลาออกยัง:bool):
    if พร้อมลาออกยัง:
        print("อะไร ทำไม หะ ปัดโธ่ กูไม่ออก แบร่ ๆ !!!")
        ic()
    else:
        print("ผมออกแล้วใครจะทำ ไม่ออก !!!")
        ic()

hello_Too(พร้อมลาออกยัง=True)

ผลลัพธ์:

อะไร ทำไม หะ ปัดโธ่ กูไม่ออก แบร่ ๆ !!!
ic| ความเจริญ.exe.py:6 in hello_Too() at 00:55:44.331

จากด้านบนจะแจ้งว่า โค้ดได้เข้าไปทำงานในส่วนของบรรทัดที่ 6 ใน hello_Too() นั่นเอง

อีกทั้งเราสามารถตั้งค่าตัว Prefix เองได้ด้วยนะ:

from datetime import datetime
from icecream import ic 
import time

def time_format():
    return f'{datetime.now()}|> '

ic.configureOutput(prefix=time_format)

for _ in range(3):
    time.sleep(1)
    ic('Baby Too')

ผลลัพธ์ที่ได้:

2021-11-11 09:08:03.313513|> 'Baby Too'
2021-11-11 09:08:04.724165|> 'Baby Too'
2021-11-11 09:08:05.931345|> 'Baby Too'

เวลาเราทำงานเสร็จแล้วจะเอา Debug ออกก็ทำได้ไม่ยากเลย เพียงแค่ค้นหา (Ctrl + F) แล้วลบตัว “ic(” ออกไปให้หมดเท่านั้นเอง (ถ้าใช้ Print ในการ Debug ต้องมานั่งตรวจอีกว่านั่นใช่ส่วนของ Debug ไหมนะ)

 

ท้ายที่สุดนี้ สำหรับเจ้าตัว Icecream ถือว่ามีประโยชน์มากเลยทีเดียว เป็นอีก 1 ทางเลือกไว้ใช้สำหรับการทำ Debugging แอดมินเชื่อว่าเจ้าตัว Library นี้จะช่วยมอบประสบการณ์ดี ๆ ให้กับทุกท่านที่เข้ามาอ่านบทความนี้ด้วยนะครับ

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน
และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

PoiNaPoi

Author PoiNaPoi

More posts by PoiNaPoi

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า