How to list all functions in a Python module?

前端 未结 17 1712
野性不改
野性不改 2020-11-22 05:38

I have a python module installed on my system and I\'d like to be able to see what functions/classes/methods are available in it.

I want to call the doc function

相关标签:
17条回答
  • 2020-11-22 06:03

    This will do the trick:

    dir(module) 
    

    However, if you find it annoying to read the returned list, just use the following loop to get one name per line.

    for i in dir(module): print i
    
    0 讨论(0)
  • 2020-11-22 06:04

    This will append all the functions that are defined in your_module in a list.

    result=[]
    for i in dir(your_module):
        if type(getattr(your_module, i)).__name__ == "function":
            result.append(getattr(your_module, i))
    
    0 讨论(0)
  • 2020-11-22 06:08

    Except dir(module) or help(module) mentioned in previous answers, you can also try:
    - Open ipython
    - import module_name
    - type module_name, press tab. It'll open a small window with listing all functions in the python module.
    It looks very neat.

    Here is snippet listing all functions of hashlib module

    (C:\Program Files\Anaconda2) C:\Users\lenovo>ipython
    Python 2.7.12 |Anaconda 4.2.0 (64-bit)| (default, Jun 29 2016, 11:07:13) [MSC v.1500 64 bit (AMD64)]
    Type "copyright", "credits" or "license" for more information.
    
    IPython 5.1.0 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: import hashlib
    
    In [2]: hashlib.
                 hashlib.algorithms            hashlib.new                   hashlib.sha256
                 hashlib.algorithms_available  hashlib.pbkdf2_hmac           hashlib.sha384
                 hashlib.algorithms_guaranteed hashlib.sha1                  hashlib.sha512
                 hashlib.md5                   hashlib.sha224
    
    0 讨论(0)
  • 2020-11-22 06:09

    An example with inspect:

    from inspect import getmembers, isfunction
    from my_project import my_module
    
    functions_list = [o for o in getmembers(my_module) if isfunction(o[1])]
    

    getmembers returns a list of (object_name, object_type) tuples.

    You can replace isfunction with any of the other isXXX functions in the inspect module.

    0 讨论(0)
  • 2020-11-22 06:09

    dir(module) is the standard way when using a script or the standard interpreter, as mentioned in most answers.

    However with an interactive python shell like IPython you can use tab-completion to get an overview of all objects defined in the module. This is much more convenient, than using a script and print to see what is defined in the module.

    • module.<tab> will show you all objects defined in the module (functions, classes and so on)
    • module.ClassX.<tab> will show you the methods and attributes of a class
    • module.function_xy? or module.ClassX.method_xy? will show you the docstring of that function / method
    • module.function_x?? or module.SomeClass.method_xy?? will show you the source code of the function / method.
    0 讨论(0)
  • 2020-11-22 06:09

    For global functions dir() is the command to use (as mentioned in most of these answers), however this lists both public functions and non-public functions together.

    For example running:

    >>> import re
    >>> dir(re)
    

    Returns functions/classes like:

    '__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
    

    Some of which are not generally meant for general programming use (but by the module itself, except in the case of DunderAliases like __doc__, __file__ ect). For this reason it may not be useful to list them with the public ones (this is how Python knows what to get when using from module import *).

    __all__ could be used to solve this problem, it returns a list of all the public functions and classes in a module (those that do not start with underscores - _). See Can someone explain __all__ in Python? for the use of __all__.

    Here is an example:

    >>> 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']
    >>>
    

    All the functions and classes with underscores have been removed, leaving only those that are defined as public and can therefore be used via import *.

    Note that __all__ is not always defined. If it is not included then an AttributeError is raised.

    A case of this is with the ast module:

    >>> import ast
    >>> ast.__all__
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: module 'ast' has no attribute '__all__'
    >>>
    
    0 讨论(0)
提交回复
热议问题