def test(a):
return(a)
def test(a, b):
return(a*b)
เรียก test(5) แล้วมันบอก args ไม่พอ แต่เรียก test(3, 5) แล้วได้แฮะ
อีกเรื่องครับ เราจะเช็คประสิทธิภาพ code ได้ยังไงครับ?
เช่นผมมีวิธีเขียน function gcd อยู่ 3 แบบ (recursive, วน loop, แยกตัวประกอบ)
อยากรู้ว่าแบบไหนดีที่สุดต้องเอาอะไรไปตรวจสอบครับ?
ถ้าอยากได้ program ที่มีประสิทธิภาพให้หลีกเลียงการใช้ recursive ครับ
ถึงมันจะดูเท่กว่า loop ธรรมดาก็เถอะ
ส่วนวีธีเช็คประสิทธิภาพ ผมคิดว่า Python น่าจะมี function get เวลาระดับ microsecond นะ
get เวลาก่อน execute function
get เวลาหลัง execute function
เอา (หลัง-ก่อน)*1000 จะได้ความเร็วของการ execute ครั้งนั้น หน่วยเป็น millisecond
ผมไม่รู้ syntax, function ของ Python เลยตอบได้เท่านี้ล่ะครับ
อ้าว เราก็หลงใช้ recursive มาตลอด ^^"
ค้นๆ ดูแล้วเจอ time.clock() ครับ เดี๋ยวจะลองใช้ดูตามที่ว่า
ขอบคุณครับ
แล้วแต่สถานการณ์ หรือเปล่าครับ ว่าจะเขียนอะไร
Recursive จริงๆ ก็ไม่ได้เลวร้ายนะครับ โดย
เฉพาะ divide and conquer อาธิเช่น
quick sort จะเขียน ด้วย for-loop กับ
stack มันก็ไม่เวิร์คเท่า recursive ปะครับ
psyco ช่วยได้ครับ โดยเฉพาะพวก recursive นี่ถูกลงไปมหาศาล
lewcpe.com, @wasonliw
ในสถานการณ์ทั่วไป การทำ Recursive ช้ากว่า loop ครับ เพราะต้องเสียเวลาสร้าง Call Stack ในทุกครั้งที่เรียก ส่วน loop เป็นการกระโดดไปจุดเริ่มต้น และข้อเสียสำคัญของ Recursive ที่หลายคนลืม คือ Stack Overflow ครับ โดย loop สามารถหมุนรอบได้ไม่จำกัดจำนวนจนกว่างานจะเสร็จ แต่ Recursive จะมีขีดจำกัดในการเรียกอยู่ ยิ่งส่งตัวแปรเยอะยิ่งเรียกได้น้อยลง
ผมว่า ชื่อฟังก์ชันมันซ้ำกันนี้ซิ ส่วนโปรแกรมดีบักอันนี้ผมไม่ทราบครับ แต่ถ้ามีความรู้เรื่อง อังกอ ก็สามารถคำนวณเองได้ครับ ซึงก็ต้องดูว่าประสิทธิภาพด้านใหน
เอ่อ...
เข้าใจ Method Overloading มั้ยครับ
เข้าใจดีครับ เรื่องนี้ เพียงแต่ไม่แน่ใจว่า python มันรองรับหรือเปล่านะครับ
อีกอย่างผมไม่ได้อ่านหัวข้อให้ดีเองว่าเขาถามอะไร :P
เข้าใจว่า python ไม่ต้องใช้ function overloading เพราะว่าเป็น dynamic type และยังมี *args, **kwargs ให้ใช้อีก
python ไม่มี overloading แต่เราเขียนแบบนี้ก็ได้ครับ
กระจ่างเลยครับ ขอบคุณครับ ^__^
+1
แต่คงใช้เฉพาะพวกใน้ python foundation มั้ง