Скрипты python
Contents
Скрипты python#
Написание и запуск скриптов — второй способ взаимодействия с python, который будет здесь рассмотрен. Python скрипт (программа) — файл с исходным кодом python, который может быть проинтерпретирован интерпретатором. Исходный код в скрипте всегда исполняется сверху вниз, начиная с первой строки и заканчивая последней (если по пути не встретилось принудительного завершения исполнения программы). В этом отношении все очень похоже на C/C++, за исключением точки входа: в python это самое начало скрипта, в C++ — функция main.
Итого, запустить python скрипт почти полностью эквивалентно тому, чтобы поочереди вбить все инструкции внутри скрипта в интерактивную оболочку. Использовано выражение “почти полностью эквивалентно” из-за уже упомянутой функции quit(), а также из-за особенностей взаимодействия интерактивной оболочки со стандартным потоком вывода.
Принято сохранять файлы с исходным кодом python в файлы с расширением .py.
Hello, World!#
Напишем первый скрипт на python. По традиции это будет программа, печатающая строку “Hello, World!” в стандартный поток вывода.
Для такой программы в python достаточно файла из всего одной строки.
print("Hello, World!")
Если сохранить эту инструкцию в файл с названием helloworld.py, то его можно запустить следующей командой в командной строке или Anaconda prompt.
python helloworld.py
Используется та же самая команда python, что и для запуска интерактивной оболочки, но теперь аргументом ей указывается имя файла с исходным кодом python, который необходимо исполнить.
Стандартные потоки ввода и вывода#
Из примера helloworld.py можно заметить, что для вывода строки “Hello, World!” в стандартный поток вывода используется функция print. Тут и проявляется незначительная разница с интерактивной оболочкой, в которой результат вычисления выражения сразу и выводится в стандартный поток вывода, если он не присваивается в переменную. В случае скриптов такого не происходит и необходимо явно вызывать функцию print, чтобы что-то вывести в стандартный поток вывода.
Функция print принимает произвольное количество аргументов и выводит их все в стандартном потоке вывода в том же порядке, разделяя значения пробелом и в самом конце совершая перенос строки. Опциональными параметрами функции можно настроить:
поток вывода (параметр
file, по умолчанию стандартный поток вывода);разделитель значений (параметр
sep, по умолчанию пробел" ");завершающая строка (параметр
end, по умолчанию перенос строки"\n").
За взаимодействие со стандартным потоком ввода отвечает функция input, которая считывает одну строку из стандартного потока ввода и возвращает её в неизменном виде. Чтобы продемонстрировать принцип действия этой функции, слегка модифицируем предыдущий пример, чтобы он спрашивал имя пользователя и приветствовал его по введенному имени.
print("Hello, what is your name?")
name = input()
print("Hi, ", name, "!", sep="")
Сохранив и запустив этот скрипт, вы должны увидеть сообщение "Hello, what is your name?", после которого программа должна войти в режим ожидания, т.к. запустилось исполнение функции input(), а в стандартном потоке ввода нет строки, которую эта функция смогла бы считать. После того как вы наберете своё имя и нажмете клавишу Enter, строка с вашим именем попадёт в стандартный поток ввода и функция input() вернет эту строку вызывающему коду. Далее эта строка выведется между строками "Hi" и "!" с разделителем в виде пустой строки (параметр sep) с помощью функции print.
В примере выше функция input() вызывалась без аргумента, но можно использовать её необязательный аргумент, чтобы сократить количество строк в примере: указанная в качестве аргумента функции input() строка выводится в стандартный поток вывода без переноса строки и только затем сканируется стандартный поток ввода.
name = input("Hello, what is your name?\n")
print("Hi, ", name, "!", sep="")
Теперь обратим внимание на то, что функция input всегда возвращает именно строку — значение типа str. Т.е. если вы считываете число, то его необходимо явно преобразовать к необходимому числовому типу. Для демонстрации рассмотрим программу, которая спрашивает возраст пользователя и сообщает пользователю его возраст через один год.
age = int(input("What is your age? "))
print("In a year you are going to be ", age + 1, " years old!", sep="")
В первой строке программы у пользователя спрашивается его возраст и введенное им значение приводится к типу int. Во второй строке выводится сколько ему будет лет по прошествии одного года. При этом обратите внимание, что выражение age + 1 привело бы к ошибке, если бы мы не привели age к целочисленному типу конструктором типа int. Но при передаче age + 1 в функцию print вовсе не обязательно приводить целочисленное значение к строковому, т.к. функция print это сделает за нас.
Среды разработки#
Выше было продемонстрировано, что, чтобы писать программы на python, достаточно текстового редактора, а чтобы их исполнять — интерпретатора python. Но использование специальной среды разработки (IDE) может значительно упростить процесс разработки. Ниже перечисленны три самые популярные IDE.
PyCharm — одна из самых популярных полноценных сред разработки для
python. Даже в бесплатную версиюCommunity Editionвстроенно большинство необходимых разработчику инструментов.Visual Studio Code — бесплатная сравнительно легковесная среда разработки, которая с помощью расширений может быть задействована и для разработки на
python.Spider — бесплатная среда разработки для
python, специально нацеленная на ученных. Распространяется вместе сAnaconda, но можно скачать и отдельно.
Автор курса в основном пользуется VS Code, так как она быстро загружается и её функционала обычно хватает, но в масштабных проектах иногда отдаёт предпочтение PyCharm. Для самых начинающих можно порекомендовать Thonny — легковесную среду разработки, которая позволяет наглядно пошагово визуализировать процесс исполнения программы, что может оказаться полезным при изучении принципов работы языка.
Области применения скриптов#
Скрипты — самая основная форма взаимодействия с python: большинство программ на python реализуется в виде скриптов, так как исходный код из скриптов можно переиспользовать (можно писать программы в модульной структуре), скриптами и их версиями можно управлять с помощью системы управления версиями и т.д.
Тем не менее в научной среде часто пользуются блокнотами jupyter, которые позволяют в интерактивном режиме запускать исходный код на python и наблюдать результаты его исполнения в одном месте. Про jupyter речь пойдет на следующей странице.