python - क्या पायथन में एक टिप्पणी '#-*-कोडिंग: utf-8-*-' भी है?




encoding comments (2)

जैसा कि हम पायथन में टिप्पणी डालने के लिए # उपयोग करते हैं, फिर पायथन कैसे लेता है:

# -*- coding: utf-8 -*-

अलग ढंग से?


पायथन संदर्भ नियमावली में एन्कोडिंग घोषणाएँ देखें:

यदि पायथन स्क्रिप्ट की पहली या दूसरी पंक्ति में एक टिप्पणी नियमित अभिव्यक्ति coding[=:]\s*([-\w.]+) से मेल खाती है coding[=:]\s*([-\w.]+) , तो यह टिप्पणी एन्कोडिंग घोषणा के रूप में संसाधित की जाती है; इस अभिव्यक्ति का पहला समूह स्रोत कोड फ़ाइल के एन्कोडिंग को नाम देता है।

(जोर मेरा)

तो हाँ, यह एक टिप्पणी है, एक विशेष। यह विशेष है कि पार्सर कोशिश करेगा और उस पर कार्रवाई करेगा और इसे अनदेखा नहीं करेगा क्योंकि यह पहली या दूसरी पंक्ति में टिप्पणियों के लिए करता है। उदाहरण के लिए, नमूना फ़ाइल डिक्लेरेशन में एक अपंजीकृत एन्कोडिंग घोषणा।

# # -*- coding: unknown-encoding -*-
print("foo")

यदि आप यह कोशिश करते हैं और इसे चलाते हैं, तो पायथन इसकी कोशिश करेगा और इसे संसाधित करेगा, असफल और शिकायत करेगा:

python decl.py 
  File "decl.py", line 1
SyntaxError: encoding problem: unknown-encoding

हां, यह भी एक टिप्पणी है। और उस टिप्पणी की सामग्री विशेष अर्थ लेती है अगर फ़ाइल के शीर्ष पर, पहले दो पंक्तियों में स्थित है।

एनकोडिंग घोषणाओं के प्रलेखन से :

यदि पायथन स्क्रिप्ट की पहली या दूसरी पंक्ति में एक टिप्पणी नियमित अभिव्यक्ति coding[=:]\s*([-\w.]+) से मेल खाती है coding[=:]\s*([-\w.]+) , तो यह टिप्पणी एन्कोडिंग घोषणा के रूप में संसाधित की जाती है; इस अभिव्यक्ति का पहला समूह स्रोत कोड फ़ाइल के एन्कोडिंग को नाम देता है। एन्कोडिंग घोषणा स्वयं की एक पंक्ति में दिखाई देनी चाहिए। यदि यह दूसरी पंक्ति है, तो पहली पंक्ति भी केवल एक टिप्पणी-पंक्ति होनी चाहिए।

ध्यान दें कि फ़ाइल को पढ़ने के लिए कोडेक का क्या उपयोग किया जाना चाहिए, इससे कोई फर्क नहीं पड़ता है, जहां तक ​​टिप्पणियों का संबंध है। पायथन आमतौर पर # टोकन के बाद सब कुछ अनदेखा कर देगा, और सभी स्वीकार किए गए स्रोत कोड कोड # , एन्कोडिंग घोषणा और लाइन सेपरेटर अक्षर ठीक उसी तरह एन्कोड किए गए हैं जैसे वे ASCII के सभी सुपरसेट हैं। इसलिए सभी पार्सर को एक पंक्ति पढ़ना है, टिप्पणी में विशेष पाठ के लिए स्कैन करना है, एक और पढ़ना है यदि आवश्यक हो, तो टिप्पणी के लिए स्कैन करें, फिर दिए गए कोडेक के अनुसार डेटा पढ़ने के लिए पार्सर को कॉन्फ़िगर करें।

यह देखते हुए कि टिप्पणी फ़ाइल में पहली या दूसरी होनी चाहिए (और यदि यह दूसरी पंक्ति है, तो पहली पंक्ति भी एक टिप्पणी होनी चाहिए), यह पूरी तरह से सुरक्षित है, क्योंकि कॉन्फ़िगर किए गए कोडेक केवल एक अंतर कर सकते हैं वैसे भी गैर-टिप्पणी लाइनें।







comments