# 16. Додаток

## 16.1. Інтерактивний режим

### 16.1.1. Обробка помилок

When an error occurs, the interpreter prints an error message and a stack trace. In interactive mode, it then returns to the primary prompt; when input came from a file, it exits with a nonzero exit status after printing the stack trace. (Exceptions handled by an `except` clause in a `try` statement are not errors in this context.) Some errors are unconditionally fatal and cause an exit with a nonzero exit status; this applies to internal inconsistencies and some cases of running out of memory. All error messages are written to the standard error stream; normal output from executed commands is written to standard output.

Введення символу переривання (зазвичай ``Control`-`C`` або `Delete`) у основному чи додатковому командному рядку скасовує введення та повертає до основного командного рядка. [1] Введення переривання під час виконання команди викликає виключення `KeyboardInterrupt`, яке може бути оброблено оператором `try`.

### 16.1.2. Виконувані скрипти Python

У BSD Unix системах скрипти Python можна зробити безпосередньо виконуваними, як скрипти оболонки, додавши рядок

    #!/usr/bin/env python3.5

(за умови, що інтерпретатор знаходиться в змінній середовища користувача `PATH`) на початку сценарію та надає файлу режим виконання. `#!` має бути першими двома символами файлу. На деяких платформах цей перший рядок має закінчуватися закінченням рядка в стилі Unix (`'\n'`), а не закінченням рядка Windows (`'\r\n'`). Зауважте, що для початку коментаря в Python використовується хеш або символ фунта, `'#'`.

Скрипту можна надати режим виконання або дозвіл за допомогою команди chmod.

    $ chmod +x myscript.py

У системах Windows немає поняття «виконуваний режим». Програма встановлення Python автоматично пов’язує файли `.py` з `python.exe`, щоб подвійне клацання файлу Python запускало його як програму. Розширення також може бути `.pyw`, у цьому випадку вікно консолі, яке в іншому випадку б з’явилось, приховується.

### 16.1.3. Інтерактивний файл запуску

Коли ви використовуєте Python в інтерактивному режимі, часто зручно мати деякі стандартні команди, які виконуються щоразу, коли запускається інтерпретатор. Ви можете зробити це, встановивши змінну середовища з назвою `PYTHONSTARTUP` на назву файлу, що містить ваші команди запуску. Це схоже на функцію `.profile` оболонок Unix.

Цей файл читається лише під час інтерактивних сеансів, а не тоді, коли Python читає команди зі сценарію, і не коли `/dev/tty` вказано як явне джерело команд (що інакше поводиться як інтерактивний сеанс). Він виконується в тому самому просторі імен, де виконуються інтерактивні команди, тому об’єкти, які він визначає або імпортує, можна використовувати без застережень в інтерактивному сеансі. Ви також можете змінити підказки `sys.ps1` і `sys.ps2` у цьому файлі.

Якщо ви хочете прочитати додатковий файл запуску з поточного каталогу, ви можете запрограмувати це в глобальному файлі запуску за допомогою коду на кшталт `if os.path.isfile('.pythonrc.py'): exec(open ('.pythonrc.py').read())`. Якщо ви хочете використовувати файл запуску в сценарії, ви повинні зробити це явно в сценарії:

    import os
    filename = os.environ.get('PYTHONSTARTUP')
    if filename and os.path.isfile(filename):
        with open(filename) as fobj:
            startup_file = fobj.read()
        exec(startup_file)

### 16.1.4. Модулі налаштування

Python provides two hooks to let you customize it: sitecustomize and usercustomize. To see how it works, you need first to find the location of your user site-packages directory. Start Python and run this code:

    >>> import site
    >>> site.getusersitepackages()
    '/home/user/.local/lib/python3.5/site-packages'

Тепер ви можете створити файл із назвою `usercustomize.py` у цьому каталозі та помістити в нього все, що завгодно. Це впливатиме на кожен виклик Python, якщо його не запущено з параметром `-s` для вимкнення автоматичного імпорту.

sitecustomize works in the same way, but is typically created by an administrator of the computer in the global site-packages directory, and is imported before usercustomize. See the documentation of the `site` module for more details.

Виноски

[1]

Проблема з пакетом GNU Readline може запобігти цьому.