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

बाइट-संकलन पायथन पुस्तकालय

पायथन एक दुभाषिया आधारित भाषा है। हालांकि यह आंतरिक रूप से स्रोत कोड को बाइट कोड में संकलित करता है जब एक स्क्रिप्ट (.py एक्सटेंशन) चलाया जाता है और बाद में बाइटकोड संस्करण स्वचालित रूप से हटा दिया जाता है। जब एक मॉड्यूल (प्रीकंपिल्ड बिल्ट-इन मॉड्यूल के अलावा) को पहली बार आयात किया जाता है, तो इसका संकलित संस्करण भी स्वचालित रूप से बनाया जाता है लेकिन __pycache__ फ़ोल्डर में .pyc एक्सटेंशन के साथ सहेजा जाता है। बाद में उसी मॉड्यूल को आयात करने के लिए कॉल फिर से मॉड्यूल को पुन:संकलित नहीं करेंगे बल्कि पहले से निर्मित मॉड्यूल का उपयोग करेंगे।

हालाँकि, .py एक्सटेंशन वाली एक पायथन स्क्रिप्ट फ़ाइल को बिना चलाए स्पष्ट रूप से संकलित किया जा सकता है। 'py_compile' मॉड्यूल में शामिल हैं 'संकलित करें ()' उस उद्देश्य के लिए कार्य करते हैं। परिणामी .pyc फ़ाइल का नाम पायथन के संस्करण संख्या द्वारा जोड़ा गया है। Python 3.7 के मामले में, नाम में 'cpython-37' प्रत्यय है।

आपको सामान्य रूप से इस मॉड्यूल की आवश्यकता नहीं होगी। हालांकि साझा उपयोग के लिए मॉड्यूल स्थापित करते समय यह उपयोगी हो सकता है, खासकर यदि कुछ उपयोगकर्ताओं को स्रोत कोड वाली निर्देशिका में बाइट-कोड कैश फ़ाइलों को लिखने की अनुमति नहीं है।

मॉड्यूल में एक कमांड लाइन इंटरफ़ेस है। इसे निम्न प्रकार से –m स्विच का उपयोग करके आयात किया जा सकता है

E:\python37>python -m py_compile hello.py

यह 'hello.cpython-37.pyc' फ़ाइल को __pycache__ सबफ़ोल्डर में बनाएगा और संग्रहीत करेगा।

py_compile मॉड्यूल में बाइट-संकलन को कंपाइल () फ़ंक्शन का उपयोग करके प्रोग्रामेटिक रूप से भी किया जा सकता है।

import py_compile
py_compile.compile("hello.py")

.pyc एक्सटेंशन वाली बाइटकोड फ़ाइल को .py एक्सटेंशन के साथ सामान्य स्क्रिप्ट की तरह ही कमांड लाइन से सीधे निष्पादित किया जा सकता है।

E:\python37>python __pycache__/hello.cpython-37.pyc

हालांकि, इसे उसी संस्करण के दुभाषिया द्वारा निष्पादित किया जा सकता है जिसके साथ बाइटकोड फ़ाइल संकलित की गई थी। यदि हम इसे पायथन के किसी अन्य संस्करण के साथ चलाने का प्रयास करते हैं तो निम्न त्रुटि प्रदर्शित होगी।

C:\python36>python e:hello.cpython-37.pyc
RuntimeError: Bad magic number in .pyc file

py_compile मॉड्यूल में एक और फ़ंक्शन main() है जो कई स्रोत फ़ाइलों को संकलित करता है। तर्क के रूप में नामित फाइलों को संकलित किया जाता है और परिणामी बाइट-कोड को सामान्य तरीके से कैश किया जाता है। यह फ़ंक्शन स्रोत फ़ाइलों का पता लगाने के लिए निर्देशिका संरचना की खोज नहीं करता है; यह केवल स्पष्ट रूप से नामित फ़ाइलों को संकलित करता है।

मॉड्यूल PyCompileError अपवाद को भी परिभाषित करता है जो फ़ाइल को संकलित करने का प्रयास करते समय त्रुटि होने पर उठाया जाता है। (यह तभी उठाया जाएगा जब doraise विकल्प कंपाइल () फ़ंक्शन के लिए True पर सेट हो।

कंपाइल () फ़ंक्शन का ऑप्टिमाइज़ विकल्प ऑप्टिमाइज़ेशन स्तर को नियंत्रित करता है और बिल्ट-इन कंपाइल () फ़ंक्शन को पास किया जाता है। -1 का डिफ़ॉल्ट वर्तमान दुभाषिया के अनुकूलन स्तर का चयन करता है।


  1. pyqrcode मॉड्यूल का उपयोग करके पायथन क्यूआर कोड उत्पन्न करता है?

    एक क्यूआर कोड में एक सफेद पृष्ठभूमि पर एक वर्ग ग्रिड में व्यवस्थित काले वर्ग होते हैं, जिन्हें एक इमेजिंग डिवाइस जैसे कैमरा द्वारा पढ़ा जा सकता है। यह कई वाणिज्यिक ट्रैकिंग अनुप्रयोगों और मोबाइल फोन उपयोगकर्ताओं के उद्देश्य से विभिन्न अनुप्रयोगों के लिए भुगतान और वेबसाइट लॉगिन आदि के लिए व्यापक रूप

  1. पायथन गेटपास मॉड्यूल

    पायथन के मानक पुस्तकालय के गेटपास मॉड्यूल में दो कार्य परिभाषित हैं। वे तब उपयोगी होते हैं जब किसी टर्मिनल आधारित एप्लिकेशन को केवल उपयोगकर्ता क्रेडेंशियल्स को मान्य करने के बाद ही निष्पादित करने की आवश्यकता होती है। गेटपास () यह फ़ंक्शन उपयोगकर्ता को पासवर्ड दर्ज करने के लिए प्रेरित करता है। डिफ़ॉ

  1. मैं एक पायथन मॉड्यूल को कैसे अनलोड (पुनः लोड) करूं?

    फ़ंक्शन रीलोड (मॉड्यूलनाम) पहले लोड किए गए मॉड्यूल को फिर से लोड करता है (यह मानते हुए कि आपने इसे स्क्रिप्ट से बाहर निकले बिना सिंटैक्स importmoduleName के साथ लोड किया है। यह संवादात्मक उपयोग के लिए है, जहां आपने संपादित किया है एक मॉड्यूल के लिए स्रोत फ़ाइल और पायथन को छोड़कर और इसे फिर से शुरू क