2011-12-03 18 views
26

मैं पाइथन में अंतर्निहित मॉड्यूल के नामों की एक सूची प्राप्त करना चाहता हूं जैसे कि मैं फ़ंक्शन के नामकरण सम्मेलनों (अंडरलाइन, कैमलकेस या मिश्रित कैस) की लोकप्रियता का परीक्षण कर सकता हूं।पायथन में अंतर्निहित मॉड्यूल की सूची कैसे प्राप्त करें?

मैं जानता हूँ कि वहाँ एक Global Module Index लेकिन अगर वहाँ स्ट्रिंग की एक सूची है, जो उपयोग करने के लिए आसान है :) है मैं सोच रहा हूँ

अद्यतन:

len(dir(__builtins__)) = 145 
len(stdlib_list("2.7")) = 430 
help('modules') = 508 # counting manually the output 
+7

के लिए sys.builtin_module_names पर एक नज़र हो सकता है आप [PEP8] जांच करना चाह सकते (http://www.python.org/dev/peps/pep-0008/) और नामकरण सम्मेलन –

+1

"अंडरलाइन" और "अंडरस्कोर" एक ही बात है। '_name' और' __name__' के उपयोग के लिए सम्मेलन हैं। बिल्ट-इन लाइब्रेरी में फ़ंक्शन/विधि/नामों की संख्या जिसमें अपरकेस वर्ण हैं, वे गायब हो जाते हैं। आपका उद्देश्य क्या है? –

+0

थैक्स, विन्सेंट। मैं वर्तमान नामकरण स्थिति देखने के लिए पूरे अंतर्निर्मित मॉड्यूल के कार्यों को पार करने के लिए अपना हाथ लेना चाहता हूं :) – Drake

उत्तर

35

संकलित मॉड्यूल नाम sys.builtin_module_names में हैं। सभी आयात योग्य मॉड्यूल के लिए, pkgutil.iter_modules देखें।

इन्हें केवल पाइथन के साथ आने वाले मॉड्यूल (लगभग) प्राप्त करने के लिए एक स्वच्छ virtualenv में चलाएं।


नोट है कि एक "लोकप्रियता सर्वेक्षण" जरूरी मॉड्यूल है कि पुराने का उपयोग शामिल होंगे, नामकरण की परंपरा है, क्योंकि वे पहले आज के दिशा-निर्देशों के स्थान पर रखा गया लिखा गया हतोत्साहित किया, और नहीं बदल सकते क्योंकि पीछे की ओर संगत होना जरूरत है। यह किसी चीज़ के लिए उपयोगी हो सकता है, लेकिन सर्वोत्तम अभ्यास प्रश्नों के उत्तर देने के लिए नहीं, जैसे कि "मुझे अपने कार्यों को कैसे नामित करना चाहिए?"। इसके लिए, PEP8, the Python style guide देखें, खासकर "नामकरण सम्मेलन" अनुभाग देखें।

+0

प्रश्न पर @ विन्सेंटसावार्ड की टिप्पणी से प्रेरित एक नोट जोड़ा गया। धन्यवाद, विन्सेंट। –

10

कैसे इस बारे में? हालांकि, इस में निर्मित कार्यों और चर के बजाय मॉड्यूल की एक सूची हो जाता है ...

dir(__builtins__) 

help('modules'), आप सभी मॉड्यूल की एक सूची दे देंगे How can I get a list of locally installed Python modules? के अनुसार। तारों की एक सूची नहीं है, यद्यपि।

4

>>>dir (__builtins__)

या

>>>help (__builtins__)

6

अब इसके लिए एक 3 पार्टी पैकेज है। यह आधिकारिक पायथन दस्तावेज़ों में मानक लाइब्रेरी पेज के टीओसी को स्क्रैप करता है और एक सूची बनाता है।

आप पिप

pip install stdlib_list 

का उपयोग कर इसे स्थापित करने और आप source code here पा सकते हैं पुस्तकालयों

In [12]: from stdlib_list import stdlib_list 

In [13]: libraries = stdlib_list("3.5") 

In [14]: libraries[4:12] 
Out[14]: ['abc', 'aifc', 'argparse', 'array', 'ast', 'asynchat', 'asyncio', 'asyncore'] 

की एक सूची प्राप्त मिला सकते हैं।

+1

यह काफी अद्भुत है। इस जानकारी के लिए धन्यवाद। मैंने अपनी मूल पोस्ट में परिणाम (विभिन्न तरीकों से संकुलों की संख्या) भी डाल दिया। – Drake

2

CPython`s docs से:

सभी ज्ञात निर्मित मॉड्यूल sys में सूचीबद्ध हैं।builtin_module_names sys.builtin_module_names में मॉड्यूल की

नाम actual only for used एक अजगर दुभाषिया है:

सभी मॉड्यूल के नाम है कि इस अजगर दुभाषिया

प्रत्येक अंतर्निहित में संकलित कर रहे हैं देने के तार के एक टपल मॉड्यूल में आयात करते समय विशेष लोडर का उपयोग करें: BuiltinImporter

In [65]: import itertools, sys, gc 

In [66]: itertools.__loader__, sys.__loader__, gc.__loader__ 
Out[66]: 
(_frozen_importlib.BuiltinImporter, 
_frozen_importlib.BuiltinImporter, 
_frozen_importlib.BuiltinImporter) 

अजगर 3 में निर्मित मॉड्यूल की संख्या थोड़ी वृद्धि हुई है

$ python2.7 -c "import sys; print('Count built-in modules: %d' %len(sys.builtin_module_names)); print(sys.builtin_module_names)" 
Count built-in modules: 51 
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_collections', '_functools', '_heapq', '_io', '_locale', '_md5', '_random', '_sha', '_sha256', '_sha512', '_socket', '_sre', '_struct', '_symtable', '_warnings', '_weakref', 'array', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'datetime', 'errno', 'exceptions', 'fcntl', 'gc', 'grp', 'imp', 'itertools', 'marshal', 'math', 'operator', 'posix', 'pwd', 'select', 'signal', 'spwd', 'strop', 'sys', 'syslog', 'thread', 'time', 'unicodedata', 'xxsubtype', 'zipimport', 'zlib') 
$ python3.4 -c "import sys; print('Count built-in modules: %d' %len(sys.builtin_module_names)); print(sys.builtin_module_names)" 
Count built-in modules: 54 
('_ast', '_bisect', '_codecs', '_collections', '_datetime', '_elementtree', '_functools', '_heapq', '_imp', '_io', '_locale', '_md5', '_operator', '_pickle', '_posixsubprocess', '_random', '_sha1', '_sha256', '_sha512', '_socket', '_sre', '_stat', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'array', 'atexit', 'binascii', 'builtins', 'errno', 'faulthandler', 'fcntl', 'gc', 'grp', 'itertools', 'marshal', 'math', 'posix', 'pwd', 'pyexpat', 'select', 'signal', 'spwd', 'sys', 'syslog', 'time', 'unicodedata', 'xxsubtype', 'zipimport', 'zlib') 

CPython के रूप में कार्यान्वित किया जाता है (प्राथमिक) सी प्रोग्रामिंग भाषा पर, तो यह आसान है यह पता लगाने के लिए नहीं है, उदाहरण के स्थान के रूप में में Python`s मॉड्यूल sys (this answer के आधार पर): है CPython, मेरा उत्तर में देखने के लिए सभी उपलब्ध मॉड्यूल के बारे में एक जानकारी प्राप्त करने के बारे में

$ locate sysmodule | grep python 
/usr/include/python2.7/sysmodule.h 
/usr/include/python3.4m/sysmodule.h 
/usr/local/include/python3.5m/sysmodule.h 

अधिक जानकारी here

1

यह नीचे दिए गए कोड के दिए गए ब्लॉक का उपयोग करके किया जा सकता है और यह मेरे अनुसार सबसे प्रभावी तरीका है।

import sys 
a = sys.builtin_module_names 
print(a) 

यदि आप उन्हें मुद्रित करना चाहते हैं तो अंतिम पंक्ति शामिल की जाएगी। यहां, एक ट्यूपल है और इसलिए यह टुपल की सभी कार्यक्षमताओं तक पहुंच सकता है।

आप आगे मदद https://docs.python.org/3/library/sys.html

संबंधित मुद्दे