वैश्विक कार्यों के लिए dir()
लिए उपयोग करने की आज्ञा है (जैसा कि इन उत्तरों में से अधिकांश में वर्णित है), हालांकि यह सार्वजनिक कार्यों और गैर-सार्वजनिक कार्यों दोनों को एक साथ सूचीबद्ध करता है।
उदाहरण के लिए चल रहा है:
>>> import re
>>> dir(re)
रिटर्न फ़ंक्शंस / कक्षाएं जैसे:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
जिनमें से कुछ आम तौर पर सामान्य प्रोग्रामिंग उपयोग के लिए नहीं हैं (लेकिन मॉड्यूल द्वारा ही, DunderAliases जैसे __doc__
, __file__
ect के मामले में) को छोड़कर । इस कारण से उन्हें सार्वजनिक लोगों के साथ सूचीबद्ध करना उपयोगी नहीं हो सकता है (यह इस प्रकार है कि पायथन को पता है कि उपयोग करते समय क्या प्राप्त करना है from module import *
)।
__all__
इस समस्या को हल करने के लिए इस्तेमाल किया जा सकता है, यह एक मॉड्यूल में सभी सार्वजनिक कार्यों और वर्गों की सूची देता है (जो अंडरस्कोर के साथ शुरू नहीं होते हैं - _
)। देखें
Can किसी अजगर में __all__ समझाने?के उपयोग के लिए __all__
।
यहाँ एक उदाहरण है:
>>> import re
>>> re.__all__
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 'escape', 'error', 'A', 'I', 'L', 'M', 'S', 'X', 'U', 'ASCII', 'IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 'VERBOSE', 'UNICODE']
>>>
अंडरस्कोर वाले सभी कार्यों और वर्गों को हटा दिया गया है, केवल उन लोगों को छोड़कर जिन्हें सार्वजनिक रूप से परिभाषित किया गया है और इसलिए इनका उपयोग किया जा सकता है import *
।
ध्यान दें कि __all__
हमेशा परिभाषित नहीं किया जाता है। यदि यह शामिल नहीं है तो aAttributeError
उठाया है।
इसका एक मामला खगोल मॉड्यूल के साथ है:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>