পাইথনে ফাংশন আর্গুমেন্ট *args ও **kwargs
আমরা মাঝে মাঝেই পাইথনের ফাংশনের প্যারামিটার হিসাবে *args, ** kwargs কে দেখতে পাই । তো এগুলো আসলে কি ? এবং এগুলো কিভাবে কাজ করে ? এই দুইটা বুঝতে হলে প্রথমে আমাদের আর্গুমেন্ট কি সেটা বুঝতে হবে ।আর্গুমেন্ট
কোন ফাংশন কল করার সময় আমার ফাংশনে যে ভেলু pass করি করি সেটা কে বলা হয় আর্গুমেন্ট । পাইথনে দুই ধরনের আর্গুমেন্ট আছে,- Keyword Argument.
- Positional Argument.
Keyword Argument
যে সকল আর্গুমেন্টের সাথে তার আইডেন্টিফায়ার থাকে সেসব আর্গুমেন্ট কে keyword argument বলে । উদাহরণ দিলে পরিষ্কার হয়ে যাবে। মনে করেন আমাদের এইরকম একটা ফাংশন আছে,উপরে আমরা ৪ নং লাইনে ফাংশন কল করার সময় যে দুইটা আর্গুমেন্ট pass করলাম সেটাকে বলা হয় keyword argument. এখানে name = 'Arif' এ name এবং age = 24 এর age আর্গুমেন্ট দুইটির আইডেন্টিফায়ার । কারণ name, age দিয়ে আমরা আলাদা ভাবে দুইটা আর্গুমেন্টকে আইডেন্টিফাই করতে পারছি ।
Positional Argument
যে আর্গুমেন্ট গুলো keyword argument না সেগুলো কে positional argument বলে । এই ধরনের আর্গুমেন্টের কোন আইডেন্টিফায়ার থাকে না । উদাহরণ,
লক্ষণ করেন, এখানে আর্গুমেন্ট কে আইডেন্টিফাই করার জন্য কোন নাম সেট করা হয় নি । শুধু আর্গুমেন্টের ভেলু পাঠানো হয়েছে । এই ধরনের আর্গুমেন্টকে positional argument বলা হয় ।
মনে করেন আপনার এমন একটা ফাংশন দরকার সেটা তে আপনি যেকোনো সংখ্যক আর্গুমেন্ট pass করতে পারেন অর্থাৎ A function that acceptes variable lenght argument । এই ধরনের ফাংশন লিখতে গেলে আপনাকে *arags, **kwargs ব্যবহার করতে হবে ।
*args এর ব্যবহার
আপনার ফাংশনের আর্গুমেন্ট গুলো যদি non keyword আর্গুমেন্ট অর্থাৎ positional argument হয় সেক্ষেত্রে আপনি *args ব্যবহার করবেন । নিচে একটা উদাহরণ দেখেন তাহলে বিষয়টা পরিষ্কার হয়ে যাবে ।উপরে আমরা নর্মাল আরগুমেত বাদে ৩ টা আর্গুমেন্ট পাঠিয়েছি । আমরা *args দিয়ে N সংখ্যক আর্গুমেন্ট পাঠাতে পারব ।
**kwargs এর ব্যবহার
আমাদের আর্গুমেন্ট গুলো positional argument না হয়ে যদি keyword argument হয় তাহলে আমাদের কে **kwargs ব্যবহার করতে হবে । নিচে একটা উদারহরন দেখি,অর্থাৎ আমারা বলতে পারি **kwargs দিয়ে আমরা আর্গুমেন্টের ডিকশনারি কে কোন ফাংশনে পাস করতে পারি । *args ও **kwargs আরও বিভিন্ন ভাবে ব্যবহার করা যায় নিচে তার কিছু উদাহরণ দেয়া হল,
এখন আমরা যদি একই ফাংশনে *args, **kwargs ব্যবহার করতে চাই তবে আমাদের কে একটা অর্ডার ফলো করতে হবে । যদি কোন নর্মাল আর্গুমেন্ট থাকে তবে সেটাকে প্রথমে রাখতে হবে, তারপর থাকবে *args এর পরে থাকবে **kwargs
def my_function(normal_arg, *args, **kwargs)
এই সম্পর্কে আপনি আরও জানতে চাইলে পাইথনে অফিশিয়াল ওয়েবসাইট দেখতে পারেন ।
More on define function
Comments
Post a Comment