সমস্যা
আপনি এমন একটি ফাংশন লিখতে চান যা যেকোনো সংখ্যক ইনপুট আর্গুমেন্ট গ্রহণ করতে পারে।
সমাধান
পাইথনে * আর্গুমেন্ট যেকোনো সংখ্যক পজিশনাল আর্গুমেন্ট গ্রহণ করতে পারে।
উদাহরণ: গড় বের করা
def define_average(first_arg, *rest_arg):
average = (first_arg + sum(rest_arg)) / (1 + len(rest_arg))
print(f"Output \n *** The average for the given numbers {average}")
define_average(1, 2) # 1.5
define_average(1, 2, 3, 4) # 2.5
এখানে rest_arg হল অতিরিক্ত আর্গুমেন্টগুলোর টাপল।
কিওয়ার্ড আর্গুমেন্টের জন্য **
def player_stats(player_name, player_country, **player_titles):
print(f"Type of player_titles - {type(player_titles)}")
titles = ' AND '.join('{} : {}'.format(key, value) for key, value in player_titles.items())
stats = 'The player - {name} from {country} has {titles}'.format(name=player_name, country=player_country, titles=titles)
return stats
player_stats('Roger Federer', 'Switzerland', Grandslams=20, ATP=103)
আউটপুট
Type of player_titles -
The player - Roger Federer from Switzerland has Grandslams : 20 AND ATP : 103
player_titles হল পাস করা কিওয়ার্ড আর্গুমেন্টগুলোর ডিকশনারি।
দভিভাবে একসাথে: *args এবং **kwargs
def func_anyargs(*args, **kwargs):
print(args) # টাপল
print(kwargs) # ডিকশনারি
এই ফাংশনে সব পজিশনাল আর্গুমেন্ট args টাপলে এবং সব কিওয়ার্ড আর্গুমেন্ট kwargs ডিকশনারিতে সংগ্রহ হয়।