Modules and Namespaces in Python

Modules and Namespaces in Python – Modules Import करना Codes को Execute करने का एक तरीका है लेकिन साथ ही ये Modules, Python का सबसे बड़ा Program Structure भी है जिसका प्रयोग बड़े Python Applications Develop करते समय हमें करना ही पड़ता है ताकि हम हमारे Application को आसानी से Manage व Handle कर सकें क्‍योंकि किसी भी Application को एक Single Python File के रूप में Develop करके Manage व Maintain नहीं किया जा सकता।

कोई भी Python Program ढ़ेर सारे Modules का Collection होता है जो कि import Statement द्वारा आपस में Link होते हैं और प्रत्‍येक Module File, Variables का एक Package होता है, जिसे Namespace के नाम से जाना जाता है और सरल शब्‍दों में कहें तो प्रत्‍येक Module एक Self-Contained Namespace ही होता है क्‍योंकि एक Module File, किसी दूसरी Module File में Defined Names को को तब तक Access नहीं कर सकता, जब तक कि वह दूसरी File को Explicitly import Statement द्वारा Import न कर ले।

इसी वजह से Modules का प्रयोग करने पर Name Collisions की समस्‍या Python Programming में न के बराबर होती है क्‍योंकि प्रत्‍येक Script File अपने आप में एक Self-Contained Namespace होता है और एक Script File में Defined Names किसी दूसरी File में Defined Names के साथ कभी Conflict नहीं करता, भले ही उन दोनों Files में Variable, Function, Class आदि को Exactly समान Names का प्रयोग करते हुए ही Define क्‍यों न किया गया हो।

यहां एक Note करने वाली बात ये है कि जब हम from का प्रयोग करते हुए Module Import करते हैं, तब Import होने वाली File के सभी Names, Current Script File में Copy हो जाते हैं। फलस्‍वरूप यदि एक से ज्‍यादा Modules को Import किया जाए और दो अलग Modules में Exactly समान Names के Identifiers हों, तो उस स्थिति में Name Conflict की समस्‍या पैदा हो सकती है और बाद में Import होने वाले Module का Identifier, पहले Import होने वाले Module के Identifier को Overwrite तो कर देता है लेकिन इस Overwriting का कोई Notification, Warning या Error Message भी Return नहीं करता। इस स्थिति में जो Runtime Bugs पैदा होते हैं, उन्‍हें Resolve करना अत्‍यधिक जटिल हो जाता है।

इसलिए बेहतर यही रहता है कि हमेंशा import Statement का प्रयोग करते हुए ही Modules को Import किया जाए ताकि Current Script File में Modules से आने वाले Attributes को उनके ModuleName.Attribute Statement के माध्‍यम से ही Access किया जा सके, ताकि प्रत्‍येक Name अपने Separate Namespace से Identify हो और Name Conflict की समस्‍या कभी पैदा ही न हो पाए।

Name Conflict से बचने का दूसरा तरीका ये है कि हम from Statement के साथ Import होने वाले Module के हर उस Name को भी Explicitly Specify कर दें, जिन्‍हें Current Script में Use करना चाहते हैं। इस स्थिति में हमें हमेंशा पता रहेगा कि हम किस Module से किस Name को Current Script में Use करना चाहते हैं और जब एक से ज्‍यादा Modules में एक ही Name के Multiple Identifiers होंगे, तो हमें पहले से ही पता होगा कि किन Modules की वजह से Name Conflict की स्थिति पैदा हो सकती है। परिणामस्‍वरूप हम उस स्थिति को Module Import करते समय ही Handle कर लेंगे।

Python in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Python in Hindi | Page: 602 | Format: PDF

BUY NOW GET DEMO REVIEWS