50 команд на Python часть 2. Оценка кода, Утверждение значений, Функции отображения, Виртуальное окружение, Циклы

Первую часть смотри тут Подробнее ➤
6. Оценка кода
Иногда у вас могут быть фрагменты кода, которые собираются вместе программно. Если эти фрагменты кода собраны вместе в виде строки, вы можете выполнить результат с помощью команды 'eval ("code_string")'. Любые синтаксические ошибки в строке кода сообщаются как исключения. По умолчанию этот код выполняется в текущей сессии, используя текущие словари globals и locals. Команда 'eval' может также принимать два других необязательных параметра, в которых вы можете указать другой набор словарей для globals и locals. Если есть только один дополнительный параметр, то предполагается, что это словарь globals. Опционально вы можете передать объект кода, созданный командой compile, вместо строки кода. Возвращаемое значение этой команды - None.
7. Утверждение значений
В какой-то момент нам всем необходимо отладить часть кода, который мы пытаемся написать. Одним из полезных инструментов в этом деле является концепция утверждения. Команда assert принимает выражение Python и проверяет, истинно ли оно. Если да, то выполнение продолжается в обычном режиме. Если оно не истинно, то выдается ошибка AssertionError. Таким образом, вы можете проверить, что инварианты в вашем коде остаются неизменными. Таким образом можно проверить предположения, сделанные в коде. По желанию можно включить второй параметр в команду assert. Этот второй параметр представляет собой выражение Python, которое будет выполнено в случае неудачи утверждения. Обычно это какое-то подробное сообщение об ошибке, которое выводится на печать. Или же вы можете включить код очистки, который попытается восстановиться после неудачного утверждения.
8. Функции отображения
В современных программах часто встречается задача отображения заданного вычисления на целый список элементов. Python предоставляет команду 'map ()', чтобы сделать именно это. Map возвращает список результатов функции, примененной к каждому элементу объекта iterable. Map может принимать более одной функции и более одного итерируемого объекта. Если ей передается более одной функции, то возвращается список кортежей, в котором каждый элемент кортежа содержит результаты каждой функции. Если передано более одной iterable, то map предполагает, что функции принимают более одного входного параметра, поэтому он будет брать их из заданных iterables. При этом неявно предполагается, что все итерабельные таблицы имеют одинаковый размер и что все они необходимы в качестве параметров для данной функции.
9. Виртуальное окружение
Из-за потенциальной сложности среды Python иногда лучше создать чистую среду, в которой можно установить только те модули, которые нужны для данного проекта. В этом случае вы можете использовать команду virtualenv для инициализации такой среды. Если вы создадите каталог с именем 'ENV', вы можете создать новую среду с помощью команды 'virtualenv ENV'. Это создаст подкаталоги bin, lib и include и заполнит их начальным окружением. Затем вы можете начать использовать это новое окружение, выполнив скрипт 'ENV/bin/ activate', который изменит несколько переменных окружения, например, PATH. Когда вы закончите, вы можете использовать скрипт 'ENV/bin/deactivate', чтобы вернуть окружение вашей оболочки в прежнее состояние. Таким образом, вы можете создать окружение, содержащее только те модули, которые вам нужны для выполнения определенного набора задач.
10. Циклы
Хотя это и не является строгой необходимостью, каждый должен знать, как работать с циклами. Два основных типа циклов - это цикл с фиксированным числом итераций (for) и условный цикл (while). В цикле for вы итерируете некоторую последовательность значений, вытаскивая их из списка по одному за раз и помещая во временную переменную. И так продолжается до тех пор, пока вы не обработаете все элементы или не выполните команду break. В цикле while цикл продолжается до тех пор, пока некоторое тестовое выражение не примет значение True. Хотя циклы можно завершать досрочно с помощью команды break, вы также можете пропускать фрагменты кода в любом цикле с помощью команды continue, чтобы выборочно остановить текущую итерацию и перейти к следующей.