Skip to content

Home Администрирование Автоматизация сокращения
Автоматизация сокращения

Оболочка IPython делает достаточно много, чтобы повысить производительность труда, и кроме этого она предоставляет ряд функций и особенностей, помогающих автоматизировать решение задач в IPython.

alias

Для начала упомянем специальную функцию alias. Мы уже рассматривали ее выше В этом разделе, поэтому не будем повторно описывать принципы ее использования. Но нам хотелось бы напомнить, что функция alias способна не только помочь использовать системные команды системы *nix в оболочке IPython, но также может оказать помощь в автоматизации решения задач.

macro

Функция macro позволяет определять блоки программного кода, которые могут выполняться позднее, в составе любого программного кода, с которым вам придется работать. Макроопределения, создаваемые с помощью специальной функции macro, выполняются в текущем контексте вашего программного кода. Если у вас имеется некоторая последовательность инструкций, которую вы часто используете для обработки своих файлов, вы можете создать макроопределение, которое

будет выполнять эту работу. Чтобы получить представление о том, как с помощью макроопределения можно выполнять обработку списка файлов, рассмотрим следующий пример:

К моменту создания цикла в In [2] в dirlist не было ни одного элемента, чтобы их можно было обойти в цикле, но так как мы предполагаем, что позднее в dirlist появятся элементы, мы создали макрокоманду с именем procdir, которая выполняет обход списка в цикле. Макрокоманда создается в соответствии с синтаксисом: macro macro_name range_ of_lines, где под range_of_lines подразумевается список строк истории команд, которые должны быть добавлены в макроопределение. Строки в этом списке должны определяться номерами или диапазонами номеров (например, 1-4) строк и отделяться друг от друга пробелами.

В следующем примере мы создали список имен файлов и сохранили его в переменной dirlist, а затем выполнили макрокоманду procdir. Макрокоманда выполнит обход списка файлов в dirlist:

После того как макрокоманда будет определена, ее можно будет отредактировать с помощью функции edit. В результате этого будет открыт текстовый редактор. Очень удобно иметь возможность выполнить отладку макрокоманды, добиваясь правильной ее работы, прежде чем сохранить ее.

store

Вы можете сохранить свои макрокоманды и простые переменные с помощью специальной функции store. Она имеет следующий стандартный формат: store variable. Кроме того, функция store может принимать дополнительные параметры, которые могут оказаться для вас полезными: вызов store -d variable удалит указанную переменную из списка сохраняемых; параметр -z удалит все сохраняемые переменные; а параметр -r выполнит повторную загрузку всех сохраняемых переменных.

reset

Функция reset удаляет все переменные из интерактивного пространства имен. В следующем примере определяются три переменные, затем вызывается функция whos, чтобы убедиться в их присутствии, затем выполняется очистка пространства имен с помощью функции reset и повторно вызывается функция whos, чтобы убедиться в том, что переменные исчезли:

run

Функция run выполняет указанный файл в оболочке IPython. Это, кроме всего, позволяет работать с модулями на языке Python во внешнем текстовом редакторе и интерактивно тестировать внесенные изменения

в IPython. После выполнения указанной программы управление возвращается в оболочку IPython. Функция run имеет следующий формат записи: run options specified_file args.

При использовании параметра -n переменная_ name_ модуля получа
ет в качестве значения название модуля, а не строку '_ _main_ _'. Это

приводит к тому, что модуль выполняется так, как если бы он был просто импортирован.

При использовании параметра -i модуль выполняется в текущем пространстве имен оболочки IPython, благодаря чему модуль получает доступ ко всем переменным, которые были определены.

При использовании параметра -е оболочка IPython будет игнорировать вызов функции sys.exit() и исключение SystemExit. Даже если они будут иметь место, оболочка IPython продолжит свою работу.

При использовании параметра -t оболочка IPython выведет информацию о времени выполнения модуля.

При использовании параметра -d указанный модуль будет запущен под управлением отладчика Python (pdb).

При использовании параметра -р указанный модуль будет запущен под управлением профилировщика.

save

Функция save сохраняет указанные строки ввода в указанный файл. Порядок использования функции save: save options filename lines. Строки могут указываться в том же формате, что и в функции macro. Единственный дополнительный параметр -r определяет, что в файл следует сохранить строки в непреобразованном виде, то есть том виде, в каком они вводились. По умолчанию строки сохраняются в преобразованном, стандартном для языка Python, виде.

rер

Последняя функция, используемая для автоматизации решения задач, - это функция rep. Функция rep может принимать ряд параметров, которые вы найдете полезными. Вызов функции rep без параметров возвращает последний вычисленный результат и помещает строковое его представление в следующей строке ввода. Например:

Вызов функции rep в строке In [3] привел к вставке текста в строке In [4]. Такая ее особенность позволяет программно генерировать ввод в оболочке IPython. Это особенно удобно при использовании комбинаций макрокоманд и генераторов.

Обычно функция rep без параметров используется при редактировании без использования мыши. Если у вас имеется переменная, содержащая некоторое значение, с помощью этой функции его можно будет редактировать непосредственно. В качестве примера представим, что у нас имеется функция, которая возвращает каталог bin, куда был установлен некоторый пакет. Мы сохраняем каталог bin в переменной с именем а:

Если вызвать функцию rep прямо сейчас, мы получим строку /opt/local/squiggly/bin в новой строке ввода, с мигающим курсором в конце строки, приглашающим нас к ее редактированию:

Если нам требуется сохранить не каталог bin, а корневой каталог пакета, мы можем просто удалить bin в конце строки, окружить строку кавычками и добавить в начало строки ввода имя новой переменной и оператор присваивания:

Теперь у нас имеется новая переменная, содержащая строку с именем корневого каталога данного пакета.

Несомненно, мы могли бы просто скопировать и вставить эту строку, но для этого пришлось бы выполнить больший объем работы. Зачем нам отвлекаться от столь удобной клавиатуры, чтобы дотянуться до мыши? Теперь вы можете использовать переменную new_a в качестве корневого каталога для выполнения любых необходимых действий с пакетом.

Когда функции rep в качестве параметра передается число, она выбирает значение соответствующей строки ввода из истории команд, вставляет ее в следующую строку ввода и помещает курсор в конец этой строки. Это бывает удобно для запуска, редактирования и повторного запуска отдельных строк или даже небольших блоков программы. Например:

Теперь нам нужно отредактировать строку ввода In [2] так, чтобы выводились значения, умноженные на 2. Для этого можно снова ввести цикл for или воспользоваться функцией rep:

Кроме того, функция гер способна принимать диапазоны строк. Синтаксис диапазона аналогичен тому, что используется в функции macro, которая уже рассматривалась выше В этом разделе. Когда функции rep передается диапазон строк, они выполняются немедленно, например:

Здесь в строках c ln[1] по ln[3] мы определили переменную, увеличили ее на 1, и вывели текущее значение. В строках In [4] и In [7] мы предложили функции гrep повторить строки 2 и 3. Обратите внимание на отсутствие двух строк (5 и 6) - эти строки были выполнены после строки In [4].

Последний параметр функции гер, который мы рассмотрим, - строка. Этот случай можно выразить словами: «передача слова функции гер» или даже: «передача функции гер искомой строки без кавычек». Например:

Здесь мы определили несколько переменных и потребовали от функции rep повторить строку, в которой присутствует слово «а». В результате мы получили строку, введенную в приглашении In [1], и получили возможность отредактировать ее и запустить повторно.

Оболочка IPython является самым ценным инструментом в нашем арсенале. Мастерство владения ее возможностями напоминает мастерство владения текстовым редактором: чем большим опытом вы обладаете, тем быстрее будете решать утомительные задачи. Даже несколько лет тому назад, когда мы только начали использовать оболочку IPython, она уже была весьма мощным инструментом. С тех пор ее мощь увеличилась еще больше. Функция grep и обработка строк - это первые две особенности, которые сразу же приходят на ум, когда мы задумываемся о по-настоящему полезных и мощных возможностях, перечень которых непрерывно продолжает пополняться усилиями сообщества IPython. Мы настоятельно рекомендуем поближе познакомиться с оболочкой IPython. Освоение ее - это надежные инвестиции в будущее, о которых вам не придется сожалеть.

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top