2.2 Non-essential Built-in Functions 
There are several built-in functions that are no longer essential to learn,
know or use in modern Python programming.  They have been kept here to
maintain backwards compatibility with programs written for older versions
of Python.
Python programmers, trainers, students and bookwriters should feel free to
bypass these functions without concerns about missing something important.
- 
  | apply( | function, args[, keywords]) |  
 
- 
  The function argument must be a callable object (a
  user-defined or built-in function or method, or a class object) and
  the args argument must be a sequence.  The function is
  called with args as the argument list; the number of arguments
  is the length of the tuple.
  If the optional keywords argument is present, it must be a
  dictionary whose keys are strings.  It specifies keyword arguments
  to be added to the end of the argument list.
  Calling apply() is different from just calling
  function(args), since in that case there is always
  exactly one argument.  The use of apply() is equivalent
  tofunction(*args, **keywords).
  Use of apply() is not necessary since the ``extended call
  syntax,'' as used in the last example, is completely equivalent.
 Deprecated since release 2.3.
Use the extended call syntax instead, as described
                   above. 
- 
  | buffer( | object[, offset[, size]]) |  
 
- 
  The object argument must be an object that supports the buffer
  call interface (such as strings, arrays, and buffers).  A new buffer
  object will be created which references the object argument.
  The buffer object will be a slice from the beginning of object
  (or from the specified offset). The slice will extend to the
  end of object (or will have a length given by the size
  argument).
- 
  Return a tuple consisting of the two numeric arguments converted to
  a common type, using the same rules as used by arithmetic
  operations. If coercion is not possible, raise TypeError.
- 
  Enter string in the table of ``interned'' strings and return
  the interned string - which is string itself or a copy.
  Interning strings is useful to gain a little performance on
  dictionary lookup - if the keys in a dictionary are interned, and
  the lookup key is interned, the key comparisons (after hashing) can
  be done by a pointer compare instead of a string compare.  Normally,
  the names used in Python programs are automatically interned, and
  the dictionaries used to hold module, class or instance attributes
  have interned keys.  
Changed in version 2.3:
Interned strings are not
  immortal (like they used to be in Python 2.2 and before);
  you must keep a reference to the return value of intern()
  around to benefit from it.
Release 2.4.4, documentation updated on 18 October 2006.
 
See About this document... for information on suggesting changes.