เมื่อเรากำหนดฟังก์ชันในโปรแกรม python จุดประสงค์คือเพื่อรันโค้ดซ้ำแล้วซ้ำเล่าโดยใส่ค่าต่างๆ ให้กับอาร์กิวเมนต์ของฟังก์ชัน ความท้าทายอย่างหนึ่งในการออกแบบนี้คือ จะเกิดอะไรขึ้นหากเราไม่แน่ใจเกี่ยวกับจำนวนอาร์กิวเมนต์ที่เราต้องการประมวลผลทุกครั้งที่เราเรียกใช้ฟังก์ชันนั้น นี่คือที่ที่ต้องการอาร์กิวเมนต์พิเศษที่เรียกว่า **args และ **kwargs มาดูกันทีละตัว
*args
*args ทำให้เราสามารถใช้จำนวนตัวแปรของอาร์กิวเมนต์เป็นอินพุตของฟังก์ชันได้ ในตัวอย่างด้านล่าง เรากำลังค้นหาผลลัพธ์ของการคูณชุดตัวเลข จำนวนตัวเลขเหล่านี้จะแตกต่างกันไปทุกครั้งที่เราเรียกใช้ฟังก์ชัน
ตัวอย่าง
def findproduct(*many_nums): result = 1 for num in many_nums: result = result * num print("Multiplication result:",result) findproduct(3,9) findproduct(2,11,10)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
('Multiplication result:', 27) ('Multiplication result:', 220)
**kwargs
ต่อไป มีสถานการณ์ต่างๆ ที่เราต้องการส่งผ่านอาร์กิวเมนต์ของคีย์เวิร์ด ซึ่งโดยทั่วไปแล้วจะเป็นคู่คีย์-ค่าเป็นอาร์กิวเมนต์ของฟังก์ชัน
ที่นี่อีกครั้ง เราสามารถส่งต่อหมายเลขตัวแปรของอาร์กิวเมนต์ของคีย์เวิร์ดดังกล่าวไปยังฟังก์ชันได้ อาร์กิวเมนต์ดังกล่าวมีชื่อว่า **kwargs โปรดทราบว่ามีเครื่องหมายดอกจันสองดอกเมื่อใช้อาร์กิวเมนต์ดังกล่าว ในความเป็นจริง อาร์กิวเมนต์ของคีย์เวิร์ดดังกล่าวจะถูกส่งต่อไปยังโปรแกรมเป็นพจนานุกรมหลามซึ่งมีคู่คีย์-ค่าจำนวนหนึ่ง
ตัวอย่าง
def country_details(**state_info): print('\n\n') for k,v in state_info.items(): print("{} is {}".format(k,v)) country_details(StateName="Telangana", Capital="Hyderabad",Population=3400000) country_details(StateName="Andhra Pradesh", Capital="Amaravati",Population=1000000,ForestCoverage="30%")
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
StateName is Telangana Population is 3400000 Capital is Hyderabad StateName is Andhra Pradesh Population is 1000000 ForestCoverage is 30% Capital is Amaravati