इन अजगर फ़ाइल एक्सटेंशन का क्या मतलब है?
- .pyc
- .pyd
- .pyo
उनके बीच क्या अंतर हैं और वे * .py फ़ाइल से कैसे उत्पन्न होते हैं?
इन अजगर फ़ाइल एक्सटेंशन का क्या मतलब है?
उनके बीच क्या अंतर हैं और वे * .py फ़ाइल से कैसे उत्पन्न होते हैं?
जवाबों:
.py
: यह आम तौर पर इनपुट स्रोत कोड है जो आपने लिखा है।.pyc
: यह संकलित बायटेकोड है। यदि आप एक मॉड्यूल का आयात करते हैं, तो अजगर एक *.pyc
फ़ाइल का निर्माण करेगा, जिसमें बाद में इसे फिर से आसान (और तेज) आयात करने के लिए बाईटेकोड होता है।.pyo
: यह एक फ़ाइल प्रारूप था जिसका उपयोग *.pyc
अनुकूलन ( -O
) ध्वज के साथ बनाई गई फ़ाइलों के लिए पायथन 3.5 से पहले किया गया था । (नीचे नोट देखें).pyd
: यह मूल रूप से एक विंडोज़ dll फ़ाइल है। http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllइसके अलावा .pyc
बनाम पर कुछ और चर्चा के लिए .pyo
, यहां देखें: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (मैंने नीचे दिया गया महत्वपूर्ण भाग कॉपी किया है)
- जब पायथन दुभाषिया को -O ध्वज के साथ लगाया जाता है, तो अनुकूलित कोड उत्पन्न होता है और '.pyo' फ़ाइलों में संग्रहीत होता है। वर्तमान में ऑप्टिमाइज़र ज्यादा मदद नहीं करता है; यह केवल मुखर बयान निकालता है। जब -O का उपयोग किया जाता है, तो सभी बाइटकोड को अनुकूलित किया जाता है; .pyc फाइलों को नजरअंदाज किया जाता है और .py फाइलें अनुकूलित बायोटेक को संकलित की जाती हैं।
- पायथन दुभाषिया (-OO) के लिए दो-ओ झंडे पास करने से बाइटकोड कंपाइलर को अनुकूलन करने का कारण होगा जो कुछ दुर्लभ मामलों में खराबी कार्यक्रमों के परिणामस्वरूप हो सकता है। वर्तमान में केवल
__doc__
तार को बाइटकोड से हटा दिया जाता है, जिसके परिणामस्वरूप अधिक कॉम्पैक्ट '.pyo' फाइलें होती हैं। चूंकि कुछ प्रोग्राम इन उपलब्ध होने पर भरोसा कर सकते हैं, आपको केवल इस विकल्प का उपयोग करना चाहिए यदि आप जानते हैं कि आप क्या कर रहे हैं।- जब कोई '.pyc' या '.pyo' फ़ाइल से पढ़ा जाता है, तो वह '' .py '' फ़ाइल से आने वाली फ़ाइल से कोई प्रोग्राम तेजी से नहीं चलता है; एकमात्र चीज़ जो '.pyc' या '.pyo' फ़ाइलों के बारे में तेज़ है, वह गति है जिसके साथ वे लोड किए गए हैं।
- जब किसी स्क्रिप्ट को कमांड लाइन पर अपना नाम देकर चलाया जाता है, तो स्क्रिप्ट के लिए बायटेकोड कभी भी '.pyc' या '.py' फ़ाइल में नहीं लिखा जाता है। इस प्रकार, किसी स्क्रिप्ट के स्टार्टअप समय को उसके अधिकांश कोड को एक मॉड्यूल में ले जाने और एक छोटी बूटस्ट्रैप स्क्रिप्ट होने से कम किया जा सकता है जो उस मॉड्यूल को आयात करता है। कमांड लाइन पर सीधे '.pyc' या '.pyo' फ़ाइल का नाम देना भी संभव है।
ध्यान दें:
2015-09-15 पर पायथन 3.5 रिलीज ने PEP-488 को लागू किया और .pyo
फाइलों को खत्म कर दिया । इसका मतलब यह है कि .pyc
फाइलें अडॉप्टेड और ऑप्टिमाइज्ड बायटेकोड दोनों को दर्शाती हैं।
def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
.pyo
फ़ाइलों की अवधारणा को दूर करता है । यहां तक कि अनुकूलित बायटेकोड .pyc
विस्तार पायथन 3.5 के साथ समाप्त होता है , फिर।
sys.path
। site
मॉड्यूल देखें ।अतिरिक्त अजगर फ़ाइल एक्सटेंशन (ज्यादातर दुर्लभ और अनौपचारिक) की एक बड़ी सूची http://dcjtech.info/topic/python-file-extensions/ पर देखी जा सकती है
.pth
फाइलों पर चर्चा होनी चाहिए ।