pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/blob/main/Doc/library/codeop.rst

ub.githubassets.com/assets/global-5efd63e783ac04bb.css" /> cpython/Doc/library/codeop.rst at main · python/cpython · GitHub
Skip to content

Latest commit

 

History

History
70 lines (49 loc) · 2.92 KB

File metadata and controls

70 lines (49 loc) · 2.92 KB

:mod:`!codeop` --- Compile Python code

.. module:: codeop
   :synopsis: Compile (possibly incomplete) Python code.

Source code: :source:`Lib/codeop.py`


The :mod:`!codeop` module provides utilities upon which the Python read-eval-print loop can be emulated, as is done in the :mod:`code` module. As a result, you probably don't want to use the module directly; if you want to include such a loop in your program you probably want to use the :mod:`code` module instead.

There are two parts to this job:

  1. Being able to tell if a line of input completes a Python statement: in short, telling whether to print '>>>' or '...' next.
  2. Remembering which future statements the user has entered, so subsequent input can be compiled with these in effect.

The :mod:`!codeop` module provides a way of doing each of these things, and a way of doing them both.

To do just the former:

.. function:: compile_command(source, filename="<input>", symbol="single")

   Tries to compile *source*, which should be a string of Python code and return a
   code object if *source* is valid Python code.  In that case, the filename
   attribute of the code object will be *filename*, which defaults to
   ``'<input>'``.  Returns ``None`` if *source* is *not* valid Python code, but is a
   prefix of valid Python code.

   If there is a problem with *source*, an exception will be raised.
   :exc:`SyntaxError` is raised if there is invalid Python syntax, and
   :exc:`OverflowError` or :exc:`ValueError` if there is an invalid literal.

   The *symbol* argument determines whether *source* is compiled as a statement
   (``'single'``, the default), as a sequence of :term:`statement` (``'exec'``) or
   as an :term:`expression` (``'eval'``).  Any other value will
   cause :exc:`ValueError` to be raised.

   .. note::

      It is possible (but not likely) that the parser stops parsing with a
      successful outcome before reaching the end of the source; in this case,
      trailing symbols may be ignored instead of causing an error.  For example,
      a backslash followed by two newlines may be followed by arbitrary garbage.
      This will be fixed once the API for the parser is better.


Instances of this class have :meth:`~object.__call__` methods identical in signature to the built-in function :func:`compile`, but with the difference that if the instance compiles program text containing a :mod:`__future__` statement, the instance 'remembers' and compiles all subsequent program texts with the statement in force.

Instances of this class have :meth:`~object.__call__` methods identical in signature to :func:`compile_command`; the difference is that if the instance compiles program text containing a :mod:`__future__` statement, the instance 'remembers' and compiles all subsequent program texts with the statement in force.

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy