Скрипты 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
речь пойдет на следующей странице.