1 2.. _introduction: 3 4************ 5Introduction 6************ 7 8This reference manual describes the Python programming language. It is not 9intended as a tutorial. 10 11While I am trying to be as precise as possible, I chose to use English rather 12than formal specifications for everything except syntax and lexical analysis. 13This should make the document more understandable to the average reader, but 14will leave room for ambiguities. Consequently, if you were coming from Mars and 15tried to re-implement Python from this document alone, you might have to guess 16things and in fact you would probably end up implementing quite a different 17language. On the other hand, if you are using Python and wonder what the precise 18rules about a particular area of the language are, you should definitely be able 19to find them here. If you would like to see a more formal definition of the 20language, maybe you could volunteer your time --- or invent a cloning machine 21:-). 22 23It is dangerous to add too many implementation details to a language reference 24document --- the implementation may change, and other implementations of the 25same language may work differently. On the other hand, CPython is the one 26Python implementation in widespread use (although alternate implementations 27continue to gain support), and its particular quirks are sometimes worth being 28mentioned, especially where the implementation imposes additional limitations. 29Therefore, you'll find short "implementation notes" sprinkled throughout the 30text. 31 32Every Python implementation comes with a number of built-in and standard 33modules. These are documented in :ref:`library-index`. A few built-in modules 34are mentioned when they interact in a significant way with the language 35definition. 36 37 38.. _implementations: 39 40Alternate Implementations 41========================= 42 43Though there is one Python implementation which is by far the most popular, 44there are some alternate implementations which are of particular interest to 45different audiences. 46 47Known implementations include: 48 49CPython 50 This is the original and most-maintained implementation of Python, written in C. 51 New language features generally appear here first. 52 53Jython 54 Python implemented in Java. This implementation can be used as a scripting 55 language for Java applications, or can be used to create applications using the 56 Java class libraries. It is also often used to create tests for Java libraries. 57 More information can be found at `the Jython website <http://www.jython.org/>`_. 58 59Python for .NET 60 This implementation actually uses the CPython implementation, but is a managed 61 .NET application and makes .NET libraries available. It was created by Brian 62 Lloyd. For more information, see the `Python for .NET home page 63 <https://pythonnet.github.io/>`_. 64 65IronPython 66 An alternate Python for .NET. Unlike Python.NET, this is a complete Python 67 implementation that generates IL, and compiles Python code directly to .NET 68 assemblies. It was created by Jim Hugunin, the original creator of Jython. For 69 more information, see `the IronPython website <http://ironpython.net/>`_. 70 71PyPy 72 An implementation of Python written completely in Python. It supports several 73 advanced features not found in other implementations like stackless support 74 and a Just in Time compiler. One of the goals of the project is to encourage 75 experimentation with the language itself by making it easier to modify the 76 interpreter (since it is written in Python). Additional information is 77 available on `the PyPy project's home page <http://pypy.org/>`_. 78 79Each of these implementations varies in some way from the language as documented 80in this manual, or introduces specific information beyond what's covered in the 81standard Python documentation. Please refer to the implementation-specific 82documentation to determine what else you need to know about the specific 83implementation you're using. 84 85 86.. _notation: 87 88Notation 89======== 90 91.. index:: BNF, grammar, syntax, notation 92 93The descriptions of lexical analysis and syntax use a modified BNF grammar 94notation. This uses the following style of definition: 95 96.. productionlist:: notation 97 name: `lc_letter` (`lc_letter` | "_")* 98 lc_letter: "a"..."z" 99 100The first line says that a ``name`` is an ``lc_letter`` followed by a sequence 101of zero or more ``lc_letter``\ s and underscores. An ``lc_letter`` in turn is 102any of the single characters ``'a'`` through ``'z'``. (This rule is actually 103adhered to for the names defined in lexical and grammar rules in this document.) 104 105Each rule begins with a name (which is the name defined by the rule) and 106``::=``. A vertical bar (``|``) is used to separate alternatives; it is the 107least binding operator in this notation. A star (``*``) means zero or more 108repetitions of the preceding item; likewise, a plus (``+``) means one or more 109repetitions, and a phrase enclosed in square brackets (``[ ]``) means zero or 110one occurrences (in other words, the enclosed phrase is optional). The ``*`` 111and ``+`` operators bind as tightly as possible; parentheses are used for 112grouping. Literal strings are enclosed in quotes. White space is only 113meaningful to separate tokens. Rules are normally contained on a single line; 114rules with many alternatives may be formatted alternatively with each line after 115the first beginning with a vertical bar. 116 117.. index:: lexical definitions, ASCII 118 119In lexical definitions (as the example above), two more conventions are used: 120Two literal characters separated by three dots mean a choice of any single 121character in the given (inclusive) range of ASCII characters. A phrase between 122angular brackets (``<...>``) gives an informal description of the symbol 123defined; e.g., this could be used to describe the notion of 'control character' 124if needed. 125 126Even though the notation used is almost the same, there is a big difference 127between the meaning of lexical and syntactic definitions: a lexical definition 128operates on the individual characters of the input source, while a syntax 129definition operates on the stream of tokens generated by the lexical analysis. 130All uses of BNF in the next chapter ("Lexical Analysis") are lexical 131definitions; uses in subsequent chapters are syntactic definitions. 132 133