เมื่อเรากำหนดฟังก์ชันในโปรแกรม 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