30.13. inspect — Inspect live objects

Source code: Lib/inspect.py


The inspect module provides several useful functions to help get information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects. For example, it can help you examine the contents of a class, retrieve the source code of a method, extract and format the argument list for a function, or get all the information you need to display a detailed traceback.

There are four main kinds of services provided by this module: type checking, getting source code, inspecting classes and functions, and examining the interpreter stack.

30.13.1. Types and members

The getmembers() function retrieves the members of an object such as a class or module. The functions whose names begin with 「is」 are mainly provided as convenient choices for the second argument to getmembers(). They also help you determine when you can expect to find the following special attributes:

Type Attribute 描述
module __doc__ documentation string
  __file__ filename (missing for built-in modules)
class __doc__ documentation string
  __name__ name with which this class was defined
  __qualname__ qualified name
  __module__ name of module in which this class was defined
method __doc__ documentation string
  __name__ name with which this method was defined
  __qualname__ qualified name
  __func__ function object containing implementation of method
  __self__ instance to which this method is bound, or None
function __doc__ documentation string
  __name__ name with which this function was defined
  __qualname__ qualified name
  __code__ code object containing compiled function bytecode
  __defaults__ tuple of any default values for positional or keyword parameters
  __kwdefaults__ mapping of any default values for keyword-only parameters
  __globals__ global namespace in which this function was defined
  __annotations__ mapping of parameters names to annotations; "return" key is reserved for return annotations.
traceback tb_frame frame object at this level
  tb_lasti index of last attempted instruction in bytecode
  tb_lineno current line number in Python source code
  tb_next next inner traceback object (called by this level)
frame f_back next outer frame object (this frame’s caller)
  f_builtins builtins namespace seen by this frame
  f_code code object being executed in this frame
  f_globals global namespace seen by this frame
  f_lasti index of last attempted instruction in bytecode
  f_lineno current line number in Python source code
  f_locals local namespace seen by this frame
  f_restricted 0 or 1 if frame is in restricted execution mode
  f_trace tracing function for this frame, or None
code co_argcount number of arguments (not including keyword only arguments, * or ** args)
  co_code string of raw compiled bytecode
  co_cellvars tuple of names of cell variables (referenced by containing scopes)
  co_consts tuple of constants used in the bytecode
  co_filename name of file in which this code object was created
  co_firstlineno number of first line in Python source code
  co_flags bitmap of CO_* flags, read more here
  co_lnotab encoded mapping of line numbers to bytecode indices
  co_freevars tuple of names of free variables (referenced via a function’s closure)
  co_kwonlyargcount number of keyword only arguments (not including ** arg)
  co_name name with which this code object was defined
  co_names tuple of names of local variables
  co_nlocals number of local variables
  co_stacksize virtual machine stack space required
  co_varnames tuple of names of arguments and local variables