সমস্যা
আপনি একটি ফাংশন লিখতে চান যা যেকোনো সংখ্যক ইনপুট আর্গুমেন্ট গ্রহণ করে।
সমাধান
পাইথনে * আর্গুমেন্ট যেকোনো সংখ্যক আর্গুমেন্ট গ্রহণ করতে পারে। যেকোন দুই বা ততোধিক সংখ্যার গড় বের করার উদাহরণ দিয়ে আমরা এটি বুঝতে পারব। নীচের উদাহরণে, rest_arg হল সমস্ত অতিরিক্ত আর্গুমেন্টের একটি টিপল (আমাদের ক্ষেত্রে সংখ্যায়) পাস করা। ফাংশন আর্গুমেন্টগুলিকে গড় গণনা সম্পাদনের একটি ক্রম হিসাবে বিবেচনা করে৷
# নমুনা ফাংশন প্রদত্ত সংখ্যার গড় বের করতে def define_average(first_arg, *rest_arg):গড় =(first_arg + sum(rest_arg)) / (1 + len(rest_arg))print(f"আউটপুট \n ** * প্রদত্ত সংখ্যার গড় { গড়}আউটপুট
*** প্রদত্ত সংখ্যার গড় 1.5
# আরও নম্বর সহ ফাংশন কল করুন ডিফাইন_অ্যাভারেজ(1, 2, 3, 4)আউটপুট
*** প্রদত্ত সংখ্যার গড় 2.5যেকোন সংখ্যক কীওয়ার্ড আর্গুমেন্ট গ্রহণ করতে, একটি আর্গুমেন্ট ব্যবহার করুন যা ** দিয়ে শুরু হয়।
def player_stats(player_name, player_country, **player_titles):print(f"আউটপুট \n*** player_titles এর প্রকার - {type(player_titles)}")titles =' AND'.join('{} :{ }'.ফর্ম্যাট(কী, মান) কী-এর জন্য, player_titles.items())প্রিন্টে মান {country} থেকে {titles}'.format(name =player_name,country=player_country,titles=titles)রিটার্ন statsplayer_stats('Roger Federer','Switzerland', Grandslams =20, ATP =103)আউটপুট
*** player_titles এর ধরন -*** টাইপ টাইপ এর পোস্ট কনভার্সন -
'খেলোয়াড় - সুইজারল্যান্ডের রজার ফেদেরার গ্র্যান্ডস্লামস :20 এবং ATP :103'এখানে উপরের উদাহরণে, player_titles হল একটি অভিধান যা পাস করা কীওয়ার্ড আর্গুমেন্ট ধারণ করে।
আপনি যদি এমন একটি ফাংশন চান যা যেকোনো সংখ্যক অবস্থানগত এবং কীওয়ার্ড-শুধুমাত্র আর্গুমেন্ট গ্রহণ করতে পারে, তাহলে * এবং ** একসাথে ব্যবহার করুন
def func_anyargs(*args, **kwargs):print(args) # A tupleprint(kwargs) # A dictএই ফাংশনের সাথে, সমস্ত অবস্থানগত আর্গুমেন্ট একটি টিপল আর্গুমেন্টে স্থাপন করা হয়, এবং সমস্ত কীওয়ার্ড আর্গুমেন্ট একটি অভিধান কোয়ার্গে স্থাপন করা হয়।