Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में इंटरप्रेटर बेस क्लासेस

पायथन का इंटरैक्टिव मोड REPL (Read-Evaluate-Print-Loop) सिद्धांत पर काम करता है। code मॉड्यूल REPL वातावरण सेटअप करने के लिए क्लासेस और फंक्शन्स प्रदान करता है।

मुख्य क्लासेस

1. InteractiveInterpreter

पार्सिंग और इंटरप्रेटर स्टेट (यूज़र नेमस्पेस) को हैंडल करता है।

  • runsource(source, filename, symbol) - सोर्स कंपाइल और चलाता है
  • runcode(code) - कोड ऑब्जेक्ट निष्पादित करता है

2. InteractiveConsole

InteractiveInterpreter का सबक्लास; इंटरैक्टिव पायथन कंसोल का व्यवहार अनुकरण करता है।

  • पैरेंट के सभी मेथड्स विरासत में मिलते हैं
  • interact(banner, exitmsg) - इंटरैक्टिव कंसोल शुरू करता है
  • push(line) - सोर्स टेक्स्ट की लाइन इंटरप्रेटर को भेजता है
  • resetbuffer() - अनहैंडल्ड सोर्स टेक्स्ट हटाता है
  • raw_input(prompt) - प्रॉम्प्ट लिखता है और लाइन पढ़ता है

कन्वीनियन्स फंक्शन्स

  • code.interact(local=None, exitmsg=None) - REPL लूप चलाने की सुविधा
  • code.compile_command(source, filename, symbol) - कमांड कंपाइल करता है (REPL मेन लूप के लिए)

उदाहरण: कस्टम इंटरैक्टिव कंसोल

import code

x = 10
y = 20

def add(x, y):
    return x + y

print(f"जोड़: {add(x, y)}")  # 30

# इंटरैक्टिव कंसोल शुरू करें
# local=locals() लोकल नेमस्पेस को डिफ़ॉल्ट बनाता है
code.interact(local=locals())

# कंसोल से बाहर आने के बाद (Ctrl+D / Ctrl+Z)
print(f"नए मान: x={x}, y={y}")
print(f"नया जोड़: {add(x, y)}")

नमूना सत्र आउटपुट

जोड़: 30
Python 3.6.6 |Anaconda custom (64-bit)| ...
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> x = 100
>>> y = 200
>>> exit()
नए मान: x=100, y=200
नया जोड़: 300

उन्नत उदाहरण: कस्टम इंटरप्रेटर

import code

class MyInterpreter(code.InteractiveConsole):
    def __init__(self, locals=None):
        super().__init__(locals)
        self.history = []
    
    def push(self, line):
        self.history.append(line)
        return super().push(line)
    
    def show_history(self):
        for i, line in enumerate(self.history, 1):
            print(f"{i}: {line}")

# उपयोग
interpreter = MyInterpreter(locals={'x': 10, 'y': 20})
interpreter.interact("माय कस्टम कंसोल - 'history()' टाइप करें हिस्ट्री देखने के लिए")
# कंसोल में:
# >>> history()
# 1: x = 100
# 2: y = 200

उपयोग के मामले

  • एप्लिकेशन में एम्बेडेड पायथन शेल
  • डीबगिंग कंसोल
  • कॉन्फिगरेबल स्क्रिप्टिंग इंटरफेस
  • शैक्षिक उपकरण
  • कस्टम DSL (Domain Specific Language) रनर

सुरक्षा नोट

code.interact() पूर्ण पायथन एक्सेस देता है। अविश्वसनीय इनपुट के लिए उपयोग न करें। प्रोडक्शन में sandboxing (जैसे restrictedpython) पर विचार करें।
  1. Python ग्लोबल इंटरप्रेटर लॉक (GIL) क्या है Python ग्लोबल इंटरप्रेटर लॉक (GIL) क्या है

    इस लेख में, हम जानेंगे कि Python ग्लोबल इंटरप्रेटर लॉक (GIL) क्या है।यह एक लॉक या बाधा है जो Python इंटरप्रेटर की उपलब्धता को एक साथ कई थ्रेड्स के लिए प्रतिरोधी बनाती है। GIL को Python 3.x या उससे पहले के संस्करणों में एक दोष/समस्या के रूप में पहचाना जाता है क्योंकि यह मल्टी-थ्रेडेड आर्किटेक्चर में

  1. - Python में बेस ओवरलोडिंग मेथड्स क्या हैं?

    Python क्लासेस ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पैराडाइम की सभी स्टैंडर्ड विशेषताएं प्रदान करती हैं: क्लास इनहेरिटेंस मैकेनिज्म मल्टीपल बेस क्लासेस की अनुमति देता है। एक डेराइव्ड क्लास अपने बेस क्लास या क्लासेस के किसी भी मेथड को ओवरराइड कर सकती है, और एक मेथड उसी नाम के बेस क्लास के मेथड को कॉल कर सक

  1. - Python में क्लासेस कैसे डिफाइन करें?

    Python में, लगभग सभी कोड क्लासेस का उपयोग करके लागू किया जाता है। प्रोग्रामर संबंधित कोड के टुकड़ों को एक साथ रखने के लिए क्लासेस का उपयोग करते हैं। यह क्लास कीवर्ड का उपयोग करके किया जाता है, जो ऑब्जेक्ट-ओरिएंटेड कंस्ट्रक्ट्स का संग्रह है। एक क्लास ऑब्जेक्ट बनाने के लिए एक टेम्पलेट है। ऑब्जेक्ट्स म