কম্পিউটার টিউটোরিয়াল

পাইথনে ইন্টারপ্রিটার বেস ক্লাস (Interpreter Base Classes) কী?

পাইথনের ইন্টারেক্টিভ মোড REPL (Read - Evaluate - Print - Loop) নীতিতে কাজ করে। পাইথনের স্ট্যান্ডার্ড লাইব্রেরির code মডিউলে REPL এনভায়রনমেন্ট সেট আপ করার জন্য ক্লাস ও কনভেনিয়েন্স ফাংশন রয়েছে।

code মডিউলে নিচের দুটি ক্লাস সংজ্ঞায়িত:

  • InteractiveInterpreter: এই ক্লাস পারসিং ও ইন্টারপ্রিটার স্টেট (ইউজারের নেমস্পেস) হ্যান্ডেল করে।
  • InteractiveConsole: ইন্টারেক্টিভ পাইথন ইন্টারপ্রিটার আচরণের অনুকরণ করে।

মডিউলে দুটি কনভেনিয়েন্স ফাংশন রয়েছে:

  • interact(): রিড-ইভ্যাল-প্রিন্ট লুপ চালানোর কনভেনিয়েন্স ফাংশন।
  • compile_command(): পাইথন ইন্টারপ্রিটারের মেইন লুপ (REPL) অনুকরণ করতে চায় এমন প্রোগ্রামের জন্য উপযোগী।

InteractiveInterpreter মেথড:

  • runsource(): ইন্টারপ্রিটারে সোর্স কম্পাইল ও রান করে।
  • runcode(): কোড অবজেক্ট এক্সিকিউট করে।

InteractiveConsole মেথড:

InteractiveConsole ক্লাস InteractiveInterpreter-এর সাবক্লাস, তাই উপরের মেথডগুলো স্বয়ংক্রিয়ভাবে উপলব্ধ। অতিরিক্তভাবে নিচের মেথডগুলো সংজ্ঞায়িত:

  • interact(): ইন্টারেক্টিভ পাইথন কনসোল অনুকরণ করে।
  • push(): সোর্স টেক্সটের এক লাইন ইন্টারপ্রিটারে পুশ করে।
  • resetbuffer(): ইনপুট বাফার থেকে অনহ্যান্ডেল্ড সোর্স টেক্সট সরিয়ে দেয়।
  • raw_input(prompt=""): প্রম্প্ট লিখে ডিফল্টভাবে sys.stdin থেকে এক লাইন পড়ে।

উদাহরণ

import code 
x = 10 
y = 20 
def add(x, y): 
    return x + y 
print(add(x, y)) 
code.interact(local=locals()) 
print(x, y) 
print(add(x, y))

উপরের কোডে দুটি ভেরিয়েবল ডিফাইন করা হয়েছে এবং ফাংশনে পাস করা হয়েছে। তারপর ইন্টারেক্টিভ কনসোল আহ্বান করা হয়েছে। local=locals() আর্গুমেন্ট লোকাল নেমস্পেসকে ইন্টারপ্রিটার লুপে ডিফল্ট হিসেবে ব্যবহার করার অনুমতি দেয়।

যদি আপনি ইন্টারেক্টিভ কনসোলেই ভেরিয়েবলগুলোকে নতুন মান দিয়ে Ctrl+D চাপায় এক্সিট করেন, তবে সে নতুন মানগুলো ফাংশনে পাস হবে।

আউটপুট

addition= 30 
Python 3.6.6 |Anaconda custom (64-bit)| (default, Oct 9 2018, 12:34:16) 
[GCC 7.3.0] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> x=100 
>>> y=200 
>>> now exiting InteractiveConsole... 
100 200 
addition = 300
  1. পাইথন গ্লোবাল ইন্টারপ্রেটার লক (GIL) কী এবং কেন এটি 아직도 আছে?

  2. পাইথনে মেটাক্লাস কী?

  3. পাইথনে বেস ওভারলোডিং মেথডগুলো কী কী?

  4. পাইথনে ক্লাস কীভাবে ডিফাইন করবেন?