ถึงจะตั้งชื่อว่าเพิ่มอาร์กิวเมนท์ให้ฟังก์ชัน เอาเข้าจริงๆก็ไม่รู้เหมือนกันว่าที่ทำนี่มันจะเรียกว่าอะไร
ปัญหาของผมคือผมต้องการเพิ่มการทำงานให้ฟังก์ชันที่มีอยู่แล้วโดยไม่เขียนขึ้นมาใหม่แต่ใช้วิธีเขียนครอบเอา สมมติว่ามีฟังก์ชันอยู่ 1 ฟังก์ชั่น ให้ชื่อว่าเป็น ฟังก์ชัน foo มีรายละเอียดของฟังก์ชันดังนี้
def foo(m,s,g):
print m, s, g
ทีนี้ถ้าเราอยากเขียนฟังก์ชัน bar ขึ้นมาโดยเราอยากให้มันทำงานอะไรซักอย่างด้วย โดยครอบฟังก์ชัน foo เอาไว้อีกที เราจะใช้วิธีประกาศหัวฟังก์ชันให้เหมือน foo ก็ได้ แต่ว่าเราก็ทำแบบนี้ก็ได้เหมือนกัน
def bar(*args, **kwargs):
if 'a' in kwargs:
print kwargs['a'],
del kwargs['a']
foo(*args, **kwargs)
ลองรันดูได้ดังนี้
>>> bar(a='asfd',m='afsd', s='s', g='g')
asfd afsd s g
แอบดูน่าเกลียดนิดนึงแต่ก็แก้ปัญหาผมได้แล้ว ใครมีวิธีอะไรที่ดีกว่านี้ช่วยชี้แนะด้วยครับ