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
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
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))
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
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.
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 classmodule.function_xy?
or module.ClassX.method_xy?
will show you the docstring of that function / methodmodule.function_x??
or module.SomeClass.method_xy??
will show you the source code of the function / method. 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__'
>>>