diff options
Diffstat (limited to 'Doc/tutorial')
-rw-r--r-- | Doc/tutorial/controlflow.rst | 3 | ||||
-rw-r--r-- | Doc/tutorial/datastructures.rst | 53 | ||||
-rw-r--r-- | Doc/tutorial/errors.rst | 2 | ||||
-rw-r--r-- | Doc/tutorial/inputoutput.rst | 3 | ||||
-rw-r--r-- | Doc/tutorial/interpreter.rst | 33 | ||||
-rw-r--r-- | Doc/tutorial/introduction.rst | 3 | ||||
-rw-r--r-- | Doc/tutorial/stdlib.rst | 2 | ||||
-rw-r--r-- | Doc/tutorial/stdlib2.rst | 2 | ||||
-rw-r--r-- | Doc/tutorial/venv.rst | 111 |
9 files changed, 117 insertions, 95 deletions
diff --git a/Doc/tutorial/controlflow.rst b/Doc/tutorial/controlflow.rst index 12989b2a53..d43461886e 100644 --- a/Doc/tutorial/controlflow.rst +++ b/Doc/tutorial/controlflow.rst @@ -78,6 +78,9 @@ slice notation makes this especially convenient:: >>> words ['defenestrate', 'cat', 'window', 'defenestrate'] +With ``for w in words:``, the example would attempt to create an infinite list, +inserting ``defenestrate`` over and over again. + .. _tut-range: diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index b39bdf4dfb..953a68b44a 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -60,11 +60,16 @@ objects: Remove all items from the list. Equivalent to ``del a[:]``. -.. method:: list.index(x) +.. method:: list.index(x[, start[, end]]) :noindex: - Return the index in the list of the first item whose value is *x*. It is an - error if there is no such item. + Return zero-based index in the list of the first item whose value is *x*. + Raises a :exc:`ValueError` if there is no such item. + + The optional arguments *start* and *end* are interpreted as in the slice + notation and are used to limit the search to a particular subsequence of + *x*. The returned index is computed relative to the beginning of the full + sequence rather than the *start* argument. .. method:: list.count(x) @@ -94,28 +99,26 @@ objects: An example that uses most of the list methods:: - >>> a = [66.25, 333, 333, 1, 1234.5] - >>> print(a.count(333), a.count(66.25), a.count('x')) - 2 1 0 - >>> a.insert(2, -1) - >>> a.append(333) - >>> a - [66.25, 333, -1, 333, 1, 1234.5, 333] - >>> a.index(333) - 1 - >>> a.remove(333) - >>> a - [66.25, -1, 333, 1, 1234.5, 333] - >>> a.reverse() - >>> a - [333, 1234.5, 1, 333, -1, 66.25] - >>> a.sort() - >>> a - [-1, 1, 66.25, 333, 333, 1234.5] - >>> a.pop() - 1234.5 - >>> a - [-1, 1, 66.25, 333, 333] + >>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana'] + >>> fruits.count('apple') + 2 + >>> fruits.count('tangerine') + 0 + >>> fruits.index('banana') + 3 + >>> fruits.index('banana', 4) # Find next banana starting a position 4 + 6 + >>> fruits.reverse() + >>> fruits + ['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange'] + >>> fruits.append('grape') + >>> fruits + ['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape'] + >>> fruits.sort() + >>> fruits + ['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear'] + >>> fruits.pop() + 'pear' You might have noticed that methods like ``insert``, ``remove`` or ``sort`` that only modify the list have no return value printed -- they return the default diff --git a/Doc/tutorial/errors.rst b/Doc/tutorial/errors.rst index 759588fc10..aba61da5f7 100644 --- a/Doc/tutorial/errors.rst +++ b/Doc/tutorial/errors.rst @@ -174,7 +174,7 @@ example:: for arg in sys.argv[1:]: try: f = open(arg, 'r') - except IOError: + except OSError: print('cannot open', arg) else: print(arg, 'has', len(f.readlines()), 'lines') diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index dd9c7cd731..beeaac36b9 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -25,7 +25,8 @@ first way is to do all the string handling yourself; using string slicing and concatenation operations you can create any layout you can imagine. The string type has some methods that perform useful operations for padding strings to a given column width; these will be discussed shortly. The second -way is to use the :meth:`str.format` method. +way is to use :ref:`formatted string literals <f-strings>`, or the +:meth:`str.format` method. The :mod:`string` module contains a :class:`~string.Template` class which offers yet another way to substitute values into strings. diff --git a/Doc/tutorial/interpreter.rst b/Doc/tutorial/interpreter.rst index e8d8e2b56a..3bd100d46a 100644 --- a/Doc/tutorial/interpreter.rst +++ b/Doc/tutorial/interpreter.rst @@ -10,13 +10,13 @@ Using the Python Interpreter Invoking the Interpreter ======================== -The Python interpreter is usually installed as :file:`/usr/local/bin/python3.5` +The Python interpreter is usually installed as :file:`/usr/local/bin/python3.6` on those machines where it is available; putting :file:`/usr/local/bin` in your Unix shell's search path makes it possible to start it by typing the command: .. code-block:: text - python3.5 + python3.6 to the shell. [#]_ Since the choice of the directory where the interpreter lives is an installation option, other places are possible; check with your local @@ -24,11 +24,11 @@ Python guru or system administrator. (E.g., :file:`/usr/local/python` is a popular alternative location.) On Windows machines, the Python installation is usually placed in -:file:`C:\\Python35`, though you can change this when you're running the +:file:`C:\\Python36`, though you can change this when you're running the installer. To add this directory to your path, you can type the following command into the command prompt in a DOS box:: - set path=%path%;C:\python35 + set path=%path%;C:\python36 Typing an end-of-file character (:kbd:`Control-D` on Unix, :kbd:`Control-Z` on Windows) at the primary prompt causes the interpreter to exit with a zero exit @@ -98,8 +98,8 @@ before printing the first prompt: .. code-block:: shell-session - $ python3.5 - Python 3.5 (default, Sep 16 2015, 09:25:04) + $ python3.6 + Python 3.6 (default, Sep 16 2015, 09:25:04) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> @@ -138,25 +138,24 @@ should follow. To display all these characters properly, your editor must recognize that the file is UTF-8, and it must use a font that supports all the characters in the file. -It is also possible to specify a different encoding for source files. In order -to do this, put one more special comment line right after the ``#!`` line to -define the source file encoding:: +To declare an encoding other than the default one, a special comment line +should be added as the *first* line of the file. The syntax is as follows:: # -*- coding: encoding -*- -With that declaration, everything in the source file will be treated as having -the encoding *encoding* instead of UTF-8. The list of possible encodings can be -found in the Python Library Reference, in the section on :mod:`codecs`. +where *encoding* is one of the valid :mod:`codecs` supported by Python. -For example, if your editor of choice does not support UTF-8 encoded files and -insists on using some other encoding, say Windows-1252, you can write:: +For example, to declare that Windows-1252 encoding is to be used, the first +line of your source code file should be:: # -*- coding: cp-1252 -*- -and still use all characters in the Windows-1252 character set in the source -files. The special encoding comment must be in the *first or second* line -within the file. +One exception to the *first line* rule is when the source code starts with a +:ref:`UNIX "shebang" line <tut-scripts>`. In this case, the encoding +declaration should be added as the second line of the file. For example:: + #!/usr/bin/env python3 + # -*- coding: cp-1252 -*- .. rubric:: Footnotes diff --git a/Doc/tutorial/introduction.rst b/Doc/tutorial/introduction.rst index 214032917b..7e8ee3e5ea 100644 --- a/Doc/tutorial/introduction.rst +++ b/Doc/tutorial/introduction.rst @@ -352,6 +352,9 @@ The built-in function :func:`len` returns the length of a string:: Strings support a large number of methods for basic transformations and searching. + :ref:`f-strings` + String literals that have embedded expressions. + :ref:`formatstrings` Information about string formatting with :meth:`str.format`. diff --git a/Doc/tutorial/stdlib.rst b/Doc/tutorial/stdlib.rst index 52ffdbe063..1dd06c2338 100644 --- a/Doc/tutorial/stdlib.rst +++ b/Doc/tutorial/stdlib.rst @@ -15,7 +15,7 @@ operating system:: >>> import os >>> os.getcwd() # Return the current working directory - 'C:\\Python35' + 'C:\\Python36' >>> os.chdir('/server/accesslogs') # Change current working directory >>> os.system('mkdir today') # Run the command mkdir in the system shell 0 diff --git a/Doc/tutorial/stdlib2.rst b/Doc/tutorial/stdlib2.rst index f733ffc53f..bf02c71b6a 100644 --- a/Doc/tutorial/stdlib2.rst +++ b/Doc/tutorial/stdlib2.rst @@ -278,7 +278,7 @@ applications include caching objects that are expensive to create:: Traceback (most recent call last): File "<stdin>", line 1, in <module> d['primary'] # entry was automatically removed - File "C:/python35/lib/weakref.py", line 46, in __getitem__ + File "C:/python36/lib/weakref.py", line 46, in __getitem__ o = self.data[key]() KeyError: 'primary' diff --git a/Doc/tutorial/venv.rst b/Doc/tutorial/venv.rst index 3b2ee2e24c..e2dd57d48f 100644 --- a/Doc/tutorial/venv.rst +++ b/Doc/tutorial/venv.rst @@ -20,15 +20,14 @@ the requirements of every application. If application A needs version the requirements are in conflict and installing either version 1.0 or 2.0 will leave one application unable to run. -The solution for this problem is to create a :term:`virtual -environment` (often shortened to "virtualenv"), a self-contained -directory tree that contains a Python installation for a particular -version of Python, plus a number of additional packages. +The solution for this problem is to create a :term:`virtual environment`, a +self-contained directory tree that contains a Python installation for a +particular version of Python, plus a number of additional packages. Different applications can then use different virtual environments. To resolve the earlier example of conflicting requirements, application A can have its own virtual environment with version 1.0 -installed while application B has another virtualenv with version 2.0. +installed while application B has another virtual environment with version 2.0. If application B requires a library be upgraded to version 3.0, this will not affect application A's environment. @@ -36,29 +35,26 @@ not affect application A's environment. Creating Virtual Environments ============================= -The script used to create and manage virtual environments is called -:program:`pyvenv`. :program:`pyvenv` will usually install the most -recent version of Python that you have available; the script is also -installed with a version number, so if you have multiple versions of -Python on your system you can select a specific Python version by -running ``pyvenv-3.4`` or whichever version you want. +The module used to create and manage virtual environments is called +:mod:`venv`. :mod:`venv` will usually install the most recent version of +Python that you have available. If you have multiple versions of Python on your +system, you can select a specific Python version by running ``python3`` or +whichever version you want. -To create a virtualenv, decide upon a directory -where you want to place it and run :program:`pyvenv` with the -directory path:: +To create a virtual environment, decide upon a directory where you want to +place it, and run the :mod:`venv` module as a script with the directory path:: - pyvenv tutorial-env + python3 -m venv tutorial-env This will create the ``tutorial-env`` directory if it doesn't exist, and also create directories inside it containing a copy of the Python interpreter, the standard library, and various supporting files. -Once you've created a virtual environment, you need to -activate it. +Once you've created a virtual environment, you may activate it. On Windows, run:: - tutorial-env/Scripts/activate + tutorial-env\Scripts\activate.bat On Unix or MacOS, run:: @@ -69,33 +65,36 @@ On Unix or MacOS, run:: ``activate.csh`` and ``activate.fish`` scripts you should use instead.) -Activating the virtualenv will change your shell's prompt to show what -virtualenv you're using, and modify the environment so that running -``python`` will get you that particular version and installation of -Python. For example:: +Activating the virtual environment will change your shell's prompt to show what +virtual environment you're using, and modify the environment so that running +``python`` will get you that particular version and installation of Python. +For example: - -> source ~/envs/tutorial-env/bin/activate - (tutorial-env) -> python - Python 3.4.3+ (3.4:c7b9645a6f35+, May 22 2015, 09:31:25) +.. code-block:: bash + + $ source ~/envs/tutorial-env/bin/activate + (tutorial-env) $ python + Python 3.5.1 (default, May 6 2016, 10:59:36) ... >>> import sys >>> sys.path - ['', '/usr/local/lib/python34.zip', ..., - '~/envs/tutorial-env/lib/python3.4/site-packages'] + ['', '/usr/local/lib/python35.zip', ..., + '~/envs/tutorial-env/lib/python3.5/site-packages'] >>> Managing Packages with pip ========================== -Once you've activated a virtual environment, you can install, upgrade, -and remove packages using a program called :program:`pip`. By default -``pip`` will install packages from the Python Package Index, -<https://pypi.python.org/pypi>. You can browse the Python Package Index -by going to it in your web browser, or you can use ``pip``'s -limited search feature:: +You can install, upgrade, and remove packages using a program called +:program:`pip`. By default ``pip`` will install packages from the Python +Package Index, <https://pypi.python.org/pypi>. You can browse the Python +Package Index by going to it in your web browser, or you can use ``pip``'s +limited search feature: + +.. code-block:: bash - (tutorial-env) -> pip search astronomy + (tutorial-env) $ pip search astronomy skyfield - Elegant astronomy for Python gary - Galactic astronomy and gravitational dynamics. novas - The United States Naval Observatory NOVAS astronomy library @@ -107,9 +106,11 @@ limited search feature:: "freeze", etc. (Consult the :ref:`installing-index` guide for complete documentation for ``pip``.) -You can install the latest version of a package by specifying a package's name:: +You can install the latest version of a package by specifying a package's name: + +.. code-block:: bash - -> pip install novas + (tutorial-env) $ pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas @@ -117,9 +118,11 @@ You can install the latest version of a package by specifying a package's name:: Successfully installed novas-3.1.1.3 You can also install a specific version of a package by giving the -package name followed by ``==`` and the version number:: +package name followed by ``==`` and the version number: - -> pip install requests==2.6.0 +.. code-block:: bash + + (tutorial-env) $ pip install requests==2.6.0 Collecting requests==2.6.0 Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests @@ -128,9 +131,11 @@ package name followed by ``==`` and the version number:: If you re-run this command, ``pip`` will notice that the requested version is already installed and do nothing. You can supply a different version number to get that version, or you can run ``pip -install --upgrade`` to upgrade the package to the latest version:: +install --upgrade`` to upgrade the package to the latest version: + +.. code-block:: bash - -> pip install --upgrade requests + (tutorial-env) $ pip install --upgrade requests Collecting requests Installing collected packages: requests Found existing installation: requests 2.6.0 @@ -141,9 +146,11 @@ install --upgrade`` to upgrade the package to the latest version:: ``pip uninstall`` followed by one or more package names will remove the packages from the virtual environment. -``pip show`` will display information about a particular package:: +``pip show`` will display information about a particular package: - (tutorial-env) -> pip show requests +.. code-block:: bash + + (tutorial-env) $ pip show requests --- Metadata-Version: 2.0 Name: requests @@ -157,9 +164,11 @@ packages from the virtual environment. Requires: ``pip list`` will display all of the packages installed in the virtual -environment:: +environment: + +.. code-block:: bash - (tutorial-env) -> pip list + (tutorial-env) $ pip list novas (3.1.1.3) numpy (1.9.2) pip (7.0.3) @@ -168,19 +177,23 @@ environment:: ``pip freeze`` will produce a similar list of the installed packages, but the output uses the format that ``pip install`` expects. -A common convention is to put this list in a ``requirements.txt`` file:: +A common convention is to put this list in a ``requirements.txt`` file: - (tutorial-env) -> pip freeze > requirements.txt - (tutorial-env) -> cat requirements.txt +.. code-block:: bash + + (tutorial-env) $ pip freeze > requirements.txt + (tutorial-env) $ cat requirements.txt novas==3.1.1.3 numpy==1.9.2 requests==2.7.0 The ``requirements.txt`` can then be committed to version control and shipped as part of an application. Users can then install all the -necessary packages with ``install -r``:: +necessary packages with ``install -r``: + +.. code-block:: bash - -> pip install -r requirements.txt + (tutorial-env) $ pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1)) ... Collecting numpy==1.9.2 (from -r requirements.txt (line 2)) |