Работа с REPL — Python: Настройка окружения
Python поставляется со встроенным REPL – это программа, которая работает как командная оболочка. Программу REPL еще называют интерактивным интерпретатором Python. Эта программа предназначена для ввода и выполнения кода на языке Python.
Сокращение REPL расшифровывается так:
- Read — прочитать ввод от пользователя
- Eval — выполнить введенный код
- Print — распечатать на экран результат
- Loop — снова войти в режим ожидания
Для запуска REPL достаточно набрать python3 . После этого можно выполнять код на Python и смотреть на результат его выполнения. REPL выводит результат выполнения операции прямо на экран и снова входит в режим ожидания ввода команд.
Такой способ работы хорошо подходит для отладки, простых вычислений и быстрой проверки гипотез в духе «А как работает эта штука?».
Посмотрим на пример работы с REPL:
Для выхода из REPL нужно нажать Ctrl + D .
Встроенная документация
Язык Python прямо на уровне синтаксиса поддерживает дополнение кода документацией. Основное средство документирования — это строки документации или docstrings.
Документированная функция выглядит так:
def add(x, y): """Add one argument to another""" return x + y
Из таких строк генерируется online-документация. А еще эта документация доступна для просмотра прямо в REPL. Для просмотра документации служит функция help .
Давайте объявим функцию add в REPL, попробуем ее вызвать, а затем посмотрим описание нашей функции:
Функция help работает и в интерактивном режиме. Ее можно вызвать без аргументов с помощью команды help() — в таком случае вы увидите страницу приветствия, а приглашение в строке ввода изменится на help> . Страница приглашения показывает, какие команды можно вводить. Для выхода из режима справки нужно дать команду quit или нажать Ctrl+D .
Новичкам может быть полезна команда topics . Она выводит список тем, по которым можно почитать статьи прямо в этом же режиме справки REPL.
Войдем в режим справки и выведем список тем. Затем откроем статью, которая рассказывает об операторах языка Python:
REPL и примеры кода в источниках
REPL настолько широко используется, что в самых разных источниках можно встретить примеры, изображающие кусочек диалога программиста и REPL. Выглядит это примерно так:
>>> 1 + 2 3 >>> len("Thomas") 6 >>> "Hello" + '\n' + "World!" 'Hello\nWorld!' >>> print("Hello" + '\n' + "World!") Hello World!
Обратите внимание на разные начала строчек:
- Строки с >>> — это код, введенный программистом. Сам символ >>> называется приглашением
- Строки без >>> — это результат выполнения введенного кода
Если вы решите попробовать это самостоятельно, не вводите само приглашение — достаточно ввести только сам код, следующий за символами >>> .
Каноническое представление и вывод на печать
На примерах выше видно, что при вводе строка отображается в выводе интерпретатора с кавычками и со спецсимволами. Числа выводятся как числа. То же самое касается вывода любых других значений.
Большинство значений выводится в виде канонического строкового представления. Представленные таким образом значения можно скопировать в строку приглашения и выполнить опять. Каноническое представление обычно считается правильным кодом на Python.
Кстати, самостоятельно получить каноническое представление произвольного значения можно с помощью функции repr . Посмотрим, как это работает:
>>> repr(42) '42' >>> repr("foo") '"foo"' >>> repr(None) 'None'
Обратите внимание, что результат вызова функции print не содержит кавычек и спецсимволов. Так происходит потому, что мы видим результат вывода строки на печать.
REPL и None
Еще вам стоит знать, как REPL отображает возврат из функции значения None .
Правильный ответ — никак, и это сделано специально. Если функция не возвращает результат явно, считается, что она возвращает None . И чтобы не загромождать вывод REPL бесконечными None, авторы интерпретатора решили подавлять вывод этого значения.
Именно поэтому в примере выше REPL мы не увидели, что функция print на самом деле вернула None .
Но мы все таки можем увидеть в REPL None . Для этого надо обернуть вызов print в еще один вызов print :
>>> print(42) 42 >>> print(print(42)) 42 None
Теперь мы видим это значение, потому что второй print получает None на вход и приводит к строке, а уже строку — печатает.
В работе вы можете столкнуться с ситуацией, когда функция в REPL вызывается, но ничего не возвращает. В этом нет ничего страшного: возможно, ваша функция всего лишь возвращает None .
Ввод многострочного кода
В Python REPL можно вводить и многострочный код. Отредактировать уже введенные строчки при этом не получится. Зато вводить небольшие функции таким способом вполне удобно.
Представим, что вы вводите строчку, которая по смыслу еще не завершилась. В таком случае REPL меняет приглашение на . и ожидает ввода новой строчки в дополнение к уже введенной. Так можно ввести целое определение функции вместе с docstring и логикой.
Окончанием ввода всего многострочного кода служит пустая строчка — поэтому в коде не получится использовать пустые строчки.
Примеры с многострочным кодом будут выглядеть так:
>>> def is_positive(x): . """Return True if argument is positive.""" . if x 0: . return False . return True . >>> is_positive(42) True
Подключение модулей в REPL
Вам могут понадобиться функции из модулей, встроенных в Python. Чтобы воспользоваться ими, нужно импортировать необходимый модуль или функцию:
>>> import operator >>> from math import sqrt >>> operator.pow(2, 5) 32 >>> sqrt(64) 8.0
REPL — удобный калькулятор
Python REPL удобно использовать даже в роли обычного калькулятора. Разница только в том, что REPL не запоминает промежуточный результат. Чтобы это исправить, мы можем использовать для хранения промежуточных результатов переменную:
>>> result = 42 * 7 >>> result = result - 1 >>> result = result // 2 >>> result 146
Обратите внимание, что присваивание не приводит к выводу каких-либо значений. Встроенные инструкции (statements) никогда не возвращают значения. Это одна из причин, почему они не могут быть частью выражений.
Использование переменных полезно, если промежуточные результаты нам понадобятся позже. Но если результат нужен только в следующем выражении, то можно использовать специальную переменную _ . Она всегда хранит результат выполнения предыдущей команды:
>>> 42 * 7 294 >>> _ - 1 293 >>> _ // 2 146 >>> _ 146
Вот теперь уже больше похоже на работу привычного калькулятора: промежуточные результаты сохраняются и выводятся на экран после каждого действия.
Более того, переменная _ сохраняет последний успешно полученный результат. Если при выполнении какой-то строчки кода произошла ошибка, то предыдущий результат не будет потерян. Еще результат не теряется, если вы вводите инструкции (statements).
Это удобно, если вы хотите сохранить текущее значение в переменную. Вот пример, который демонстрирует устойчивость к ошибкам и сохранение результата во время выполнения инструкций:
>>> 42 42 >>> _ // 0 Traceback (most recent call last): File "", line 1, in module> ZeroDivisionError: integer division or modulo by zero >>> _ // 6 7 >>> a = _ >>> _ + 20 27 >>> a 7
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Python-сообщество
- Начало
- » Python для новичков
- » Отмена действия
#1 Сен. 27, 2010 20:43:18
LSN От: Зарегистрирован: 2009-12-15 Сообщения: 25 Репутация: 0 Профиль Отправить e-mail
Отмена действия
Доброе время суток!
Помогите пожалуйста по сабжу:
есть скрипт, запускаю в консоли, поэтапно ввожу данные, он мне генерит .odt файл забитый всеми данными. Вопрос: как сделать отмену ввода? то есть я ввел имя, нажал enter, уже надо вводить фамилию, и в этот момент отменить введенное имя, чтобы исправить ошибку, а не запускать скрипт заново?
#2 Сен. 27, 2010 21:29:11
sypper-pit От: Ulan-Ude(msk) Зарегистрирован: 2009-01-30 Сообщения: 1102 Репутация: 6 Профиль Отправить e-mail
Отмена действия
можно по пробовать сделать функциональную клавишу которая будет прерывать запрос и запрашивать предыдущее поле ввода
#3 Сен. 28, 2010 15:20:40
LSN От: Зарегистрирован: 2009-12-15 Сообщения: 25 Репутация: 0 Профиль Отправить e-mail
Отмена действия
sypper-pit
можно по пробовать сделать функциональную клавишу которая будет прерывать запрос и запрашивать предыдущее поле ввода
А можно линк на какой-нить мануальчик или поподробнее рассказать?
#4 Сен. 28, 2010 16:52:04
sypper-pit От: Ulan-Ude(msk) Зарегистрирован: 2009-01-30 Сообщения: 1102 Репутация: 6 Профиль Отправить e-mail
Отмена действия
#5 Сен. 28, 2010 16:53:22
sypper-pit От: Ulan-Ude(msk) Зарегистрирован: 2009-01-30 Сообщения: 1102 Репутация: 6 Профиль Отправить e-mail
Отмена действия
#6 Сен. 29, 2010 09:44:29
LSN От: Зарегистрирован: 2009-12-15 Сообщения: 25 Репутация: 0 Профиль Отправить e-mail
Отмена действия
спасибо за ссылки. почитал: либо это для меня еще слишком сложно, либо это не то… 🙂
#7 Сен. 29, 2010 11:40:33
Puppy От: Зарегистрирован: 2010-02-23 Сообщения: 26 Репутация: 0 Профиль Отправить e-mail
Отмена действия
LSN
есть скрипт, запускаю в консоли, поэтапно ввожу данные, он мне генерит .odt файл забитый всеми данными. Вопрос: как сделать отмену ввода?
идея, не сразу нужно генерить odt файл а только после подтверждения пользователем.
#8 Сен. 29, 2010 13:49:29
sypper-pit От: Ulan-Ude(msk) Зарегистрирован: 2009-01-30 Сообщения: 1102 Репутация: 6 Профиль Отправить e-mail
Отмена действия
Puppy
хорошая мысль
#9 Сен. 29, 2010 14:15:49
LSN От: Зарегистрирован: 2009-12-15 Сообщения: 25 Репутация: 0 Профиль Отправить e-mail
Отмена действия
LSN
есть скрипт, запускаю в консоли, поэтапно ввожу данные, он мне генерит .odt файл забитый всеми данными. Вопрос: как сделать отмену ввода?
идея, не сразу нужно генерить odt файл а только после подтверждения пользователем. Но это получается надо после каждого введенного значения, переспрашивать пользователя, получается столько лишнего ввода с клавиатуры….но походу другого выхода нет…
#10 Сен. 30, 2010 08:38:40
sypper-pit От: Ulan-Ude(msk) Зарегистрирован: 2009-01-30 Сообщения: 1102 Репутация: 6 Профиль Отправить e-mail
Отмена действия
а если сделать GUI форму заполнения ?
- Начало
- » Python для новичков
- » Отмена действия
Задача питон реплит
Пользователь вводит количество элементов списка. С помощью цикла создается список со случайными элементами от 1 до 100. Ответом будет являться сумма соседних элементов от максимального по размеру элемента. Если максимальный по размеру элемент первый или последний, то указать ответом его соседа ([33, 5, 12] -> ответом будет 5).
- python
- python-3.x
- веб-программирование
- python-2.x
- сетевое-программирование
Отслеживать
задан 16 фев в 15:16
ты ошибся, тут не сервис по решению твоих задач
16 фев в 15:19
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
import random n = int(input("Введите количество элементов: ")) lst = [random.randint(1, 100) for _ in range(n)] max_index = lst.index(max(lst)) # индекс максимального элемента if max_index == 0: answer = lst[1] elif max_index == n - 1: answer = lst[-2] else: answer = lst[max_index - 1] + lst[max_index + 1]
Отслеживать
ответ дан 17 фев в 11:28
414 1 1 серебряный знак 11 11 бронзовых знаков
- python
- python-3.x
- веб-программирование
- python-2.x
- сетевое-программирование
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Отмена и повтор ввода
Вы можете отменить и отменить до 20 последних действий ввода или разработки в Access. Чтобы отменить действие, нажмите CTRL+Z. Чтобы отменить отмену действия, нажмите CTRL+Y.
Функции «Отменить» и «Повторить» можно удалить или повторить одно или несколько действий ввода, но все действия необходимо отменить или отменить в том порядке, в который вы их сделали, — пропустить действия нельзя. Например, если изменить значение трех полей в записи и отменить первое изменение, необходимо отменить все три изменения.
Кроме того, можно отменить большинство изменений в дизайне объектов базы данных, например добавить в отчет какой-либо объект или добавить порядок сортировки в поле запроса. Изменения в дизайне также необходимо отменить по порядку.
В этой статье
- Отмена ввода данных
- Отмена изменений дизайна
- Отмена отмененных действий
- Предотвращение потери работы
Отмена ввода данных
- Чтобы отменить последний ввод данных, нажмите CTRL+Z.
- Чтобы отменить несколько действий, сделайте одно из следующего:
- На панели быстрого доступа щелкните стрелку рядом с кнопкой «Отменить ввод » и выберите действия, которые нужно отменить. Все выбранные действия ввода обратные. Однако действия, которые можно отменить, начинаются с последнего действия, и вы можете отменять действия только в том порядке, в котором они произошли. Например, нельзя отменить только вторые внесенные изменения. Чтобы отменить второе изменение, необходимо также отменить предыдущее действие.
- Если вы не можете попасть на панель быстрого доступа (например, из-за использования модальной формы), несколько раз нажмите CTRL+Z, пока действие, которое вы хотите отменить, не будет отменено.
Важно: Некоторые действия, такие как нажатие кнопки на вкладке «Файл», отменить нельзя. Если действие нельзя отменить, команда «Отменить ввод» меняется на «Нельзя отменить».
Отмена изменений дизайна
Изменения в дизайне объектов базы данных можно отменить так же, как и ввод данных.
- Чтобы отменить последнее изменение дизайна, нажмите CTRL+Z
- Чтобы отменить несколько действий, сделайте одно из следующего:
- Несколько раз нажмите CTRL+Z, пока действие, которое вы хотите отменить, не будет отменено.
- На панели быстрого доступа щелкните стрелку рядом с кнопкой «Отменить » и выберите действия, которые нужно отменить. Все выбранные действия ввода обратные. Однако действия, которые можно отменить, начинаются с последнего действия, и вы можете отменять действия только в том порядке, в котором они произошли. Например, нельзя отменить только вторые внесенные изменения. Чтобы отменить второе изменение, необходимо также отменить предыдущее действие.
Важно: Некоторые действия, такие как нажатие кнопки на вкладке «Файл», отменить нельзя. Если действие нельзя отменить, команда «Отменить» меняется на «Нельзя отменить».
Отмена отмененных действий
- Чтобы повторно отменить последнее действие, нажмите CTRL+Y.
- Чтобы повторно отменить несколько действий, сделайте одно из следующего:
- Несколько раз нажмите CTRL+Y, пока не будут отменить действия.
- На панели быстрого доступа щелкните стрелку рядом с кнопкой » » и выберите действия, которые нужно отменить. Действия будут отпорядочены в том порядке, в котором они перечислены. Действия можно отменить только в том порядке, в котором они произошли. Например, нельзя повторно сделать только второе отмененного действия. Чтобы повторно сделать это, необходимо также повторно сделать предыдущее действие.
Важно: Если команды «Отменить» и «Повторить» недоступны, предыдущие действия невозможно повторить.
Предотвращение потери работы
Отмена позволяет сэкономить день, но это не замена регулярному сохранении работы. Чтобы избежать потери работы из-за ошибок или сбоей, можно использовать резервное копирование и восстановление, а также части приложений (шаблон).
Резервное копирование и восстановление
Прежде чем приступить к работе над основными проектами, сделайте резервную копию базы данных. Затем, если вы внести ряд изменений в схему и не сможете отменить их все, вы сможете восстановить столько данных из резервной копии, сколько нужно. Дополнительные сведения см. в статье «Защита данных с помощью резервного копирования и восстановления данных».
Части приложения
Если в большинстве баз данных или во всех базах данных используются стандартные компоненты, можно создать часть приложения. Часть приложения — это тип шаблона, который можно добавить в существующую базу данных и состоять из одного или нескольких объектов базы данных с данными или без них.
После добавления части приложения ее можно при необходимости изменить. Если вы допустили ошибку или просто решите, что вам не нравятся изменения, вы можете удалить измененные объекты и снова добавить часть приложения. Дополнительные сведения см. в статье «Сохранение и повторное использование элементов конструктора баз данных».