কম্পিউটার

পাইথনে *args এবং **kwargs


যখন আমরা একটি পাইথন প্রোগ্রামে একটি ফাংশন সংজ্ঞায়িত করি, তখন উদ্দেশ্য হল ফাংশনের আর্গুমেন্টে বিভিন্ন মান সরবরাহ করে কোডটি বারবার কার্যকর করা। এই ডিজাইনের একটি চ্যালেঞ্জ হল, যদি আমরা প্রতিবার সেই ফাংশনটিকে কল করার সময় আমরা যে আর্গুমেন্টগুলি প্রক্রিয়া করতে চাই সেই সংখ্যা সম্পর্কে আমরা নিশ্চিত না হই। এখানেই **args এবং **kwargs নামক বিশেষ আর্গুমেন্টের প্রয়োজন হয়। চলুন এক এক করে সেগুলো দেখি।

*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)

**কোয়ার্গস

এরপরে, এমন পরিস্থিতি রয়েছে যখন আমরা কীওয়ার্ড আর্গুমেন্টগুলি পাস করতে চাই, যেগুলি মূলত একটি ফাংশনের আর্গুমেন্ট হিসাবে কী-মানের জোড়া।

এখানে আবার, আমরা এই ধরনের কীওয়ার্ড আর্গুমেন্টের পরিবর্তনশীল সংখ্যা ফাংশনে পাস করতে পারি। এই ধরনের যুক্তিগুলোকে **কোয়ার্গস বলা হয়। অনুগ্রহ করে মনে রাখবেন এই ধরনের আর্গুমেন্ট ব্যবহার করার সময় দুটি তারকাচিহ্ন রয়েছে। বাস্তবে, এই ধরনের কীওয়ার্ড আর্গুমেন্টগুলি একটি পাইথন ডিকশনারী হিসাবে প্রোগ্রামে প্রেরণ করা হয় যা অনেকগুলি কী-মান জোড়া ধারণ করে৷

উদাহরণ

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

  1. পাইথনে পারস্পরিক সম্পর্ক এবং রিগ্রেশন

  2. পাইথনে প্রক্রিয়াগুলির সিঙ্ক্রোনাইজেশন এবং পুলিং

  3. পাইথনে =+ এবং +=কি করে?

  4. পাইথনে কিভাবে *args এবং ** kwargs ব্যবহার করবেন?