Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

*args และ **kwargs ใน Python


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