পাইথন প্রোগ্রামে ফাংশন ডিফাইন করার উদ্দেশ্য হলো একই কোড বারবার এক্সিকিউট করা ভিন্ন ভিন্ন আর্গুমেন্ট দিয়ে। একটি চ্যালেঞ্জ হলো: আমরা যদি নিশ্চিত না থাকি প্রতিবার ফাংশন কল করার সময় কতগুলো আর্গুমেন্ট প্রসেস করতে হবে। এখানেই স্পেশাল আর্গুমেন্ট *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