[Python From Zero To Hero]: Ep.1 What is args ?

stackpython
2 min readJan 21, 2020

--

สวัสดีค่ะ วันนี้ STACKPYTHON ขอเสนออีกหนึ่งซีรี่แก่ทุกท่าน นั่นคือ Python From Zero To Hero ซีรี่นี้ถูกสร้างมาสำหรับทุกคนๆเลย และสำหรับเพื่อนๆที่พึ่งเริ่มศึกษาการเขียน code ไม่ต้องกลัวว่าจะยากเกินไปเลย คุณสามารถเข้าใจและนำไปใช้ได้เช่นกันค่ะ โดยวันนี้จะกล่าวถึง Args ว่าแต่มันคืออะไรกันนะ?

ก่อนอื่นเรามา recap เรื่อง function กันก่อนดีกว่า

function ถูกสร้างมาเพื่ออำนวยความสะดวกผู้เขียน code เนื่ิองจากบางคำสั่งต้องนำกลับมาใช้เรื่อยๆ บ่อยครั้ง หากต้องเขียนใหม่ทุกครั้งคงเสียเวลาน่าดู

ขอยกตัวอย่างมา 1 function ง่ายๆ (ผู้เขียนใช้ Jupyter Notebook)

จำนวน parameter ที่ประกาศไว้ในฟังก์ชั่น กับ จำนวน argument ที่ใส่ค่าตอน call function ต้องมีค่าเท่ากัน code ถึงจะรันได้

a = 40 และ b= 60

ผลลัพธ์เท่ากับ 5

เมื่อไหร่ก็ตามที่จำนวน argument ไม่เท่ากับ parameter จะเกิด Error ดังภาพ

เมื่อใส่ค่า argument ไป 3 ค่า แต่ใน function มี parameter รองรับแค่ 2 ค่า จึงเกิดปัญหาตามมา ถ้าเราอยากมี parameter หลายตัวในฟังก์ชัน เราก็ต้องพิมพ์กำหนดตัวแปรเองไปเรื่อยๆหรอ? สมมติ parameterใน function มี 50 ตัว กว่าจะพิมพ์ครบใช้เวลาไปเท่าไหร่ เสียเวลามากขนาดไหนเนี่ย? เพื่อปิด pain-point ดังกล่าวจึงเกิด Args ขึ้นมา

Args ทำให้เราใส่ argument กี่ตัวก็ได้ โดยที่ไม่ต้องกำหนด parameter ใน function

แทนที่จะกำหนด parameter เป็น a,b เหมือน function ตัวอย่าง เราสามารถใส่ *args แทน parameter ได้เลย

เมื่อ call function แล้ว จะใส่ค่า argument กี่ค่าก็ได้ ตามใจตัวเองได้เลย โดยที่ไม่ต้องมากำหนด parameter a,b,c,d… ทีละตัว!

จริงๆแล้ว args คือ Tuple นี่เอง

ใจความสำคัญของ args อยู่ที่ตัว asterisk หรือเครื่องหมายคูณ (*) เลยค่ะ จริงๆแล้วเนี่ย ถ้าเรามี * แล้ว ชื่อข้างหลังเป็นอะไรก็ได้ สุดท้ายก็รันได้อยู่ดี ถ้าเพื่อนๆลองเปลี่ยนจาก *args เป็น *abc หรือ *banana สุดท้ายแล้วโปรแกรมก็ยังรันได้เหมือนเดิม! อย่าลืมไปลองกันดูน้า

จบกันไปแล้วสำหรับ Ep แรกของ Series Python From Zero To Hero ทางผู้เขียนยินดีน้อมรับคำแนะนำ ข้อติชมจากผู้อ่านทุกท่านเสมอ เพราะการเรียนรู้ไม่มีวันสิ้นสุด มาเรียนรู้ไปพร้อมๆกันนะคะ เจอกันใหม่บทความหน้าค่ะ See ya! :)

--

--

stackpython
stackpython

No responses yet