পাইথনে, দুই ধরনের আর্গুমেন্ট আছে:অবস্থানগত এবং কীওয়ার্ড আর্গুমেন্ট। এই আর্গুমেন্টগুলি অবশ্যই একটি নির্দিষ্ট ক্রমে উপস্থিত হতে হবে অন্যথায় পাইথন ইন্টারপ্রেটার একটি ত্রুটি প্রদান করে৷
এই নির্দেশিকায়, আমরা "পজিশনাল আর্গুমেন্ট কীওয়ার্ড আর্গুমেন্ট অনুসরণ করে" ত্রুটি এবং কেন এটি উত্থাপিত হয় সে সম্পর্কে কথা বলতে যাচ্ছি। আমরা এই ত্রুটির সাথে একটি উদাহরণ কোড স্নিপেট দেখব যাতে আমরা কীভাবে এটি সমাধান করতে পারি তা দেখতে পারি।
চলুন শুরু করা যাক!
সমস্যা:অবস্থানগত যুক্তি কীওয়ার্ড আর্গুমেন্ট অনুসরণ করে
আসুন আমাদের সম্পূর্ণ ত্রুটিটি একবার দেখে নেওয়া যাক:
SyntaxError: positional argument follows keyword argument
ইংরেজি ভাষার মতো প্রোগ্রামিং ভাষারও নিজস্ব নিয়ম আছে। এই নিয়ম সিনট্যাক্স হিসাবে উল্লেখ করা হয়. আমাদের ত্রুটি হল একটি সিনট্যাক্স ত্রুটি যার মানে আমরা পাইথন কোড কীভাবে লিখতে হয় তা নিয়ন্ত্রণ করে এমন একটি নিয়ম অনুসরণ করতে ব্যর্থ হয়েছি।
আমাদের ত্রুটির পরবর্তী অংশটি আমাদের বলে যে এই ত্রুটিটি কী ঘটছে। এই ক্ষেত্রে, আমাদের কোডে একটি অবস্থানগত যুক্তি থাকতে হবে যা একটি কীওয়ার্ড আর্গুমেন্টের পরে উপস্থিত হয়।
অবস্থানগত যুক্তি হল যুক্তি যা তাদের নিজ নিজ অবস্থানে উপস্থিত হয়:
def add_numbers(a, b): return a + b Let's call this function: add_numbers(2, 3)
"a" এবং "b" আমাদের ফাংশনের ভিতরে ভেরিয়েবল হয়ে যায়। এই কোডটি কাজ করে কারণ আমরা দুটি অবস্থানগত আর্গুমেন্ট নির্দিষ্ট করেছি। "a" সমান 2 এবং "b" সমান তিনটি। আমরা এই আর্গুমেন্টগুলিকে কীওয়ার্ড আর্গুমেন্ট হিসাবেও নির্দিষ্ট করতে পারি:
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।
add_numbers(a=2, b=2)
যাইহোক, আমরা প্রথমে একটি অবস্থানগত যুক্তি নির্দিষ্ট করতে পারি না এবং তারপরে কীওয়ার্ড সিনট্যাক্সে যেতে পারি।
কারণ পাইথনের একটি বিশেষ ফাংশন রয়েছে যার নাম *args যা একটি ফাংশনে একাধিক আর্গুমেন্ট প্রক্রিয়া করে। এই কোডটি বিবেচনা করুন:
def show_users(a, b, *args): print(a, b, *args)
এই কোডটি *args ব্যবহার করে। এই কীওয়ার্ডটি একটি পরিবর্তনশীল সংখ্যার আর্গুমেন্ট উপস্থাপন করে। আমরা আমাদের show_users()
কে যতগুলি আর্গুমেন্ট দিতে পারি ফাংশন যেমন আমরা চাই:
show_users("Alex", "Peter", "Violet', "Julie")
আমাদের কোড ফিরে আসে:অ্যালেক্স পিটার ভায়োলেট জুলি
আমাদের প্রথম দুটি আর্গুমেন্ট, "a" এবং "b", যথাক্রমে "Alex" এবং "Peter" মান রয়েছে।
কারণ আপনি যদি অবস্থানগত সিনট্যাক্স ব্যবহার করেন, আর্গুমেন্টগুলি যে ক্রমে পাস করা হয় সেই ক্রমে বরাদ্দ করা হয়। শেষ আর্গুমেন্টগুলি সেই ক্রম অনুসারে উপস্থিত হয় যেগুলি বলা হয়েছে কারণ *আর্গগুলি একটি অজানা পরিমাণ অতিরিক্ত আর্গুমেন্ট উপস্থাপন করে৷
একটি উদাহরণ দৃশ্য
আসুন একটি কোড স্নিপেট দেখে নেওয়া যাক যা এই ত্রুটিটি অনুভব করে:
def print_menu(salads, pizzas): print("Salad Menu") for s in salads: print(s) print("") print("Pizza Menu") for p in pizzas: print(p)
এই ফাংশন দুটি আর্গুমেন্ট গ্রহণ করে:সালাদ এবং পিজা। আমাদের ফাংশন সালাদ মেনুতে প্রতিটি সালাদ এবং পিজ্জা মেনুতে প্রতিটি পিজ্জা কনসোলে প্রিন্ট করে।
আসুন আমাদের ফাংশনকে কল করি:
salads = ["Tuna Salad", "Lettuce and Mango Salad", "Greek Salad"] pizzas = ["Veggie Supreme", "Ham and Pineapple", "BBQ Chicken"] print_menu(pizzas=pizzas, salads)
আমাদের কোড ফিরে আসে:
File "main.py", line 13 print_menu(pizzas=pizzas, salads) ^ SyntaxError: positional argument follows keyword argument
আমাদের কোডে একটি ত্রুটি আছে, যেমনটি আমরা আশা করেছিলাম। এটা ঠিক করা যাক।
সমাধান
এই সমস্যাটি সমাধান করার জন্য, আমাদের নিশ্চিত করতে হবে যে সমস্ত অবস্থানগত আর্গুমেন্ট কীওয়ার্ড আর্গুমেন্টের আগে আসে। এই নিয়মটি প্রতিফলিত করার জন্য আমরা কীভাবে আমাদের ফাংশনকে কল করি তা পরিবর্তন করুন:
print_menu(salads, pizzas)
আমরা দুটি অবস্থানগত যুক্তি নির্দিষ্ট করেছি:সালাদ এবং পিজা। বিকল্পভাবে, আমরা "স্যালাড" এর পরে কীওয়ার্ড আর্গুমেন্ট হিসাবে "পিজ্জা" নির্দিষ্ট করতে পারি:
print_menu(salads, pizzas = pizzas)
এই উদাহরণে, কোনো কীওয়ার্ড আর্গুমেন্ট যোগ করা অপ্রয়োজনীয় কারণ আমরা *args পদ্ধতি ব্যবহার করছি না। এর সাথেই, কীওয়ার্ড আর্গুমেন্ট যোগ করা একটি ফাংশনে পাস করা মানগুলির সংখ্যার উপর নির্ভর করে কোডকে আরও পাঠযোগ্য করে তুলতে পারে।
এই সংশোধিত ফাংশন কল দিয়ে আমাদের কোড চালাই:
Salad Menu Tuna Salad Lettuce and Mango Salad Greek Salad Pizza Menu Veggie Supreme Ham and Pineapple BBQ Chicken
আমাদের কোড সফলভাবে আমাদের দুটি পাইথন তালিকা প্রিন্ট করে।
উপসংহার
Python-এ একটি কীওয়ার্ড আর্গুমেন্টের আগে অবস্থানগত আর্গুমেন্ট অবশ্যই উপস্থিত হতে হবে। এর কারণ হল পাইথন অবস্থানগত আর্গুমেন্টগুলিকে যে ক্রমে প্রদর্শিত হয় সেই ক্রমে ব্যাখ্যা করে৷ তারপর, এটি নির্দিষ্ট করা হয়েছে যে কীওয়ার্ড আর্গুমেন্ট ব্যাখ্যা.
এখন আপনি একজন বিশেষজ্ঞ পাইথন ডেভেলপারের মতো "পজিশনিয়াল আর্গুমেন্ট কীওয়ার্ড আর্গুমেন্ট অনুসরণ করে" ত্রুটি সমাধান করতে প্রস্তুত!