คำตอบของ DSM และ Tadeck ตอบคำถามของคุณโดยตรง
ในสคริปต์ของฉันฉันมักจะใช้ความสะดวกdict.pop()ในการจัดการกับข้อโต้แย้งที่เป็นทางเลือกและข้อโต้แย้งเพิ่มเติม นี่คือตัวอย่างของprint()Wrapper แบบธรรมดา:
def my_print(*args, **kwargs):
    prefix = kwargs.pop('prefix', '')
    print(prefix, *args, **kwargs)
จากนั้น:
>>> my_print('eggs')
 eggs
>>> my_print('eggs', prefix='spam')
spam eggs
ดังที่คุณเห็นหากprefixไม่มีอยู่ในkwargsค่าเริ่มต้น''(สตริงว่าง) จะถูกเก็บไว้ในprefixตัวแปรโลคัล หากมีการกำหนดค่าจะถูกใช้
โดยทั่วไปแล้วนี่เป็นสูตรที่กะทัดรัดและสามารถอ่านได้สำหรับการเขียน wrapper สำหรับฟังก์ชันประเภทใด ๆ : เพียงแค่ส่งผ่านอาร์กิวเมนต์ที่คุณไม่เข้าใจและไม่รู้ด้วยซ้ำว่ามีอยู่จริงหรือไม่ หากคุณผ่าน*argsและ**kwargsทำให้โค้ดของคุณช้าลงและต้องพิมพ์เพิ่มอีกเล็กน้อย แต่หากอินเทอร์เฟซของฟังก์ชันที่เรียก (ในกรณีนี้print) เปลี่ยนไปคุณไม่จำเป็นต้องเปลี่ยนรหัสของคุณ แนวทางนี้ช่วยลดเวลาในการพัฒนาในขณะที่รองรับการเปลี่ยนแปลงอินเทอร์เฟซทั้งหมด