Как запустить скрипт на Python
Начинающий разработчик на Python, помимо синтаксиса и основных правил использования операторов этого языка, должен уметь запускать код на исполнение. Ведь только так можно понять, работает ли написанный вами скрипт, или в нем содержатся ошибки. Рассмотрим подробнее, как можно запустить скрипты в терминале операционной системы, в интегрированной среде разработки или просто из интерфейса ОС. Это позволит вам выбрать подходящий вариант и повысить эффективность своей работы.
Интерпретатор Python
Рассматриваемый язык программирования является одним из самых прогрессивных на текущий момент. Он позволяет быстро и эффективно решать задачи в самых разных областях. Однако под термином Python понимают также интерпретатор, то есть программу на компьютере, которая позволяет запускать на исполнение написанные скрипты. Она представляет собой дополнительный программный слой между аппаратным обеспечением ПК и кодом.
Существует несколько интерпретаторов:
- написанные на языке программирования С;
- написанные на языке программирования Java;
- написанные на языке Python;
- программы, реализованные в среде .NET.

Выбор конкретного варианта для конечного пользователя значения не имеет. Независимо от вида программы, написанный код будет выполняться именно так, как предусмотрено правилами этого языка.
Запуск возможен двумя способами: как готовая к использованию программная последовательность (скрипт или модуль) или как отдельные куски кода, которые вводятся прямо в окно программы.
Интерактивный запуск кода
Для тестирования отдельных команд можно использовать интерпретатор в режиме интерактивного сеанса. Для этого необходимо открыть командную строку операционной системы и ввести команду, которая запускает интерпретатор.
Для ОС Linux это будет выглядеть следующим образом:
Теперь можно вводить команды, которые будут выполняться сразу после этого. Минус подобного подхода в том, что вся введенная последовательность не сохраняется после закрытия текущей сессии.
Интерактивное исполнение кода необходимо для того, чтобы немедленно протестировать фрагмент написанного кода. Кроме того, его можно использовать в процессе обучения для проверки действий тех или иных операторов «на лету». Этот способ интерпретации команд позволяет попробовать нужные вам функции языка, не прибегая к написанию отдельных скриптов для этого.
Выйти из интерактивного режима можно с помощью команды quit(), или просто закрыв окно терминала в Windows.
Для открытия терминала или командной строки перед запуском самого интерпретатора необходимо:
- В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
- В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы. Можно использовать xterm или Konsole.
- В macOS для получения доступа к терминалу необходимо выбрать меню «Приложения», после чего перейти в раздел «Утилиты» и кликнуть на элементе «Терминал».
Как работает интерпретатор Python для скриптов
Запуск на исполнение написанных скриптов или модулей производится в пакетном режиме. И выполняется по сложной схеме, которая состоит из следующих этапов:
- Последовательная обработка всех операторов, которые записаны в скрипте.
- Компиляция исходного хода в промежуточный формат. Интерпретатор создает байт-код, который представляет собой язык программирования низкого уровня, независимый от платформы и операционной системы. Байт-код необходим для оптимизации процесса выполнения скрипта.
- Исполнение полученного кода. На этом этапе вступает в действие виртуальная машина Python (PVM), которая циклично перебирает каждый оператор из скрипта и запускает его на исполнение. Как будто вы вводите каждую команду последовательно в интерактивном интерпретаторе.
Запуск скриптов в командной строке
В интерактивном режиме, который обсуждался выше, можно записывать и выполнять любое количество строк кода. Но после закрытия окна терминала они не сохраняются. Поэтому реальные программы на Python пишутся в виде скриптов и представляют собой обычные текстовые файлы. Чтобы избежать путаницы при их хранении, им присваиваются расширения .py или .piw.
Создавать текстовый файл можно с помощью любого редактора, в том числе Notepad. Однако лучше использовать более продвинутые решения, например Sublime Text. Для примера возьмем наиболее простой скрипт, с которого начинается знакомство с любым языком программирования.
Файл можно сохранить в вашем рабочем каталоге с любым именем и расширением .py.
Чтобы запустить скрипт на исполнение, нужно использовать интерпретатор языка программирования и в качестве дополнительного параметра указать имя созданного вами файла.
В приведенном выше примере файл был назван «hello.py». После ввода команды нужно нажать клавишу «Ввод», и на экране появится результат работы скрипта. То есть надпись «Привет, Мир» или классическое английское «Hello World»!
Если файл с программой сохранен не в каталоге с интерпретатором, нужно указывать путь к нему.
Переназначение устройства вывода информации
При исполнении программного кода на Python иногда необходимо сохранять результаты, которые отображает на экране программа. Они в дальнейшем анализируются для поиска ошибок или других целей. В этом случае скрипт необходимо запускать следующей командой:
По результатам работы скрипта создается файл с именем output.txt, в который сохраняется все то, что должно было появиться на экране во время работы в программе. Это стандартный синтаксис, предусмотренный операционной системой.
Если файла с заданным именем не существует, ОС создает его автоматически. Если существует – данные в нем перезаписываются без сохранения предыдущих. В случае, когда есть необходимость в добавлении данных в конец текстового файла, вместо одного значка > необходимо указать два >>.
Прокачать навык программирования на Python и найти работу Junior Python разработчика помогут наши менторы Выбрать ментора
Запуск из командной строки без интерпретатора
В последних версиях операционной системы Windows добавлена возможность запускать скрипты на Python без ввода в командной строке названия программы-интерпретатора. То есть необходимо просто написать название файла с расширением.
Обусловлено это тем, что при клике на файле или запуске его из командной строки операционная система автоматически ищет связанное приложение и запускает его. Точно так же вы открываете файлы Word, просто кликнув на них курсором мыши.
В Unix таким образом тоже можно запускать скрипты. Однако для этого в первую строку текстового файла с командами необходимо добавить текст #!/Usr/bin/env python. Он указывает на программу, с помощью которой производится запуск. А интерпретатор языка программирования расценивает строку как комментарий и пропускает её.
Запуск скриптов из интерактивного режима
Находясь в интерактивном режиме (описан в первом разделе), пользователь может загрузить файл с написанной ранее последовательностью команд и запустить его на исполнение. Такой способ можно применять, когда модуль содержит вызовы функций, методов или других операторов, генерирующих текст на экране. В противном случае видимых результатов работы программы не будет.
Запустить скрипт из интерактивного режима можно командой:
Обратите внимание, что эта команда срабатывает один раз за интерактивный сеанс. Поэтому, если внести изменения в файл со скриптом и перезапустить его этой командой, ничего не произойдет.
Заключение
Теперь вы знаете, что команды и скрипты Python можно запускать разными способами и в разных режимах. Это позволит вам выбрать нужный вариант для решения конкретной задачи, увеличить скорость своей работы, сделать ее продуктивной и гибкой.
Python запуск файла из командной строки
Пытаюсь запустить файл из командной строки. таким образом: python filename.py Не запускается.
Дословно от автора:
Не забывайте заменять слово «python» на полный путь к исполняемому файлу интерпретатора, если переменная окружения PATH у вас не настроена.
Да, если указать путь, то файл запускается. Но, если следовать логики автора, то можно и не указывать путь. Я правильно понял? То есть, если всё настроено правильно, то слово python остается и через пробел пишем имя файла с расширением .py .
Django CMS Обучение
Запуск Python из консоли командной строки и выход из него.
1. Пуск > Все программы > Стандартные > Командная строка
2. Далее в «черном квадрате» командной строки набираете:
и нажимаете Enter.
Это команда смены директории. В результате вы попадете в папку Python27, в которую был установлен ваш Python. Если при установке вы ничего не меняли, то в таком случае Python был установлен на диск С.
Python27 это версия программы. Цифры могут быть разные в зависимости от вашей версии.
3. Далее вводите в командную строку
и нажимаете Enter. В результате Python начнет работать.
4. Для того, чтобы выйти из Python, находясь в консоли нажмите Ctrl + Z и затем нажмите Enter.
Запуск из консоли программы, написанной на языке Python и хранящейся в отдельном файле на жестком диске.
Из консоли вы можете запустить программу, написанную на языке Python, код которой хранится в отдельном файле на жестком диске. (Python при этом запускать не надо.) Для этого в консоли наберите команду
cd C:\Путь до папки с вашим файлом\
и нажмите Enter.
В результате вы перейдете в папку, в которой хранится ваш файл с программой.
Наберите в консоли название вашего файла, например
my_programm.py
(или python my_programm.py)
и нажмите Enter.
В результате, код программы из файла будет выполнен и ваша программа запустится из консоли.
Так же вы можете запустить вашу программу, написанную на языке Python, перетаскиванием иконки файла с кодом программы в окно консоли командной строки. При этом в командной строке автоматически появится путь до файла. После этого нажмите Enter и ваша программа запустится. Python при этом запускать не надо.
Команды Python.
Для отделения команд друг от друга в Python используются обязательные переходы на следующую строку и отступы перед командами в виде 4-х пробелов.
# Комментарии
# — это однострочный комментарий.
# Многострочных комментариев в Python нет.
# Для многострочных комментариев каждую строку
# необходимо начинать с символа #.
# Ниже расположен код, который обеспечивает правильную обработку
# русских букв в коде вашей программы.
# Без этого кода возникнет ошибка и программа не запустится.
# Данный код должен размещаться в самом начале вашего файла с программой.
# Математические символы
+ # это символ сложения
— # это символ вычитания
* # это символ умножения
/ # это символ деления
% # это символ получения остатка от деления
# Символы сравнения
< # это символ меньше чем
> # это символ больше чем
<= # это символ меньше чем или равно этому
>= # это символ больше чем или равно этому
== # это символ равно
!= # это символ неравно
# Булевы значения
#Логические значения
and # это символ логического и
or # это символ логического или
not # это символ логического не
# Создание переменных и действия над ними.
cars = 100.0
drivers = 30.0
cars_without_drivers = cars — drivers
car_color = «Красный»
boat_color = «Синий»
what_color = «Какой цвет у машины? %r»
water = True
gas = False
# Вывод текста на экран.
print «Данный текст будет выведен на экран.»
print ‘В коде программы можно использовать как двойные, так и одинарные кавычки.’
print gas
print «Результат вычисления равен: «, (100 — 50 + 10) / 60 * 30
print «Два меньше, чем пять? «, 2 < 5
print «Сегодня останется только», cars_without_drivers , «машин без водителей.»
print «Количество машин в автопарке равно %d.» % cars
print «У всех машин цвет %s.» % car_color
print «У нас %d автомобилей и %d водителей.» % (cars, drivers)
print «Всех вместе у нас %d штук. » % (cars + drivers)
print «Для округления чисел с плавающей точкой используйте функцию round(). В результате вы получите %r.» % round(1.7333)
print «Сегодня утром пошел белый %s» % ‘снег.’
print what_color % car_color
print car_color + boat_color
print «Папа » + «и » + «мама.»
print «.» * 10 # выведет на экран 10 точек
print «Команды можно записывать в строчкку»;print «Отделяя их точкой с запятой.»;print «Как и в других языках программирования.»
# Специальные символы %d, %s и %r отвечают за подстановку
# соответствующих значений переменных в текст.
# %d — подставляет числа.
# %s — подставляет текстовые строки.
# %r — выводит все данные без разбора.
formatter = «%r %r %r %r»
print formatter % (1, 2, 3,4 )
print formatter % («one», «two», «three», «four»)
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
«I had this thing.»,
«That you could type up right.»,
«But it didn’t sing.»,
«So I said goodnight.»
)
months = «Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug»
print «Следующий текст будет разбит на строки: «, months
print «»»
С помощью трех двойных (или трех одинарных) кавычек
можно выводить
на экран текст
в подобном
отформатированном
виде.
«»»
print «Используйте символ \» для вывода кавычек на экран.»
print «Символ \t используется для вывода табуляции.»
# Значения специальных символов.
| Символы | Что делает |
|---|---|
| \\ | Обратная косая черта (\) |
| \' | Одинарная кавычка (‘) |
| \" | Двойная кавычка («) |
| \a | ASCII Bell (BEL) |
| \b | ASCII Backspace (BS) |
| \f | ASCII Formfeed (FF) |
| \n | ASCII Linefeed (LF) |
| \N | Character named name in the Unicode database (Unicode only) |
| \r ASCII | Переход на следующую строку |
| \t ASCII | Табуляция |
| \uxxxx | Character with 16-bit hex value xxxx (Unicode only) |
| \Uxxxxxxxx | Character with 32-bit hex value xxxxxxxx (Unicode only) |
| \v | ASCII Vertical Tab (VT) |
| \ooo | Character with octal value ooo |
| \xhh | Character with hex value hh |
# Ввод данных из консоли и запись их в переменные.
print "Сколько вам лет?"
age = raw_input()
print "Какой у вас рост?"
height = raw_input()
print "Какой у вас вес?"
weight = raw_input()
print "Вам %r лет, ваш рост %r сантиметров и ваш вес равен %r килограмм." % (age, height, weight)
print "Данные из консоли берутся как строки. Поэтому используется форматер %r"
print "Для преобразования вводимых данных в числа воспользуйтесь следующим кодом:"
digits = int(raw_input())
print "%d - это числовые данные" % digits
# Стоит избегать использование просто функции input() для ввода данных, из-за того, что она не всегда работает правильно.
name = raw_input ("Как вас зовут? ")
print name
# Подстановка значений в программу при её запуске из консоли
Перенесите в ваш файл следующий код:
from sys import argv
script, first, second, third = argv
print "Вызван script: ", script
print "Ваша перевая переменная это: ", first
print "Ваша вторая переменная это: ", second
print "Ваша третья переменная это: ", third
Введите в консоли имя вашего файла и список модулей:
my_programm.py first 2nd 3rd
и нажмите Enter.
В результате преденные значения по порядку будут подставлены в ваши переменные и сообщения будут выведены на экран.
# Чтение содержимого текстового файла и вывод его на экран.
Создайте текстовый файл с именем sample.txt и поместите его в папку с вашей программой my_programm.py.
В файл sample.txt вставьте следующий текст:
Этот текст находится во внешнем файле.
При запуске программы он отображается на экране.
Это очень здорово!
Далее откройте файл с вашей программой и введите в него следующий код:
from sys import argv
script, filename = argv
print "Мы открываем файл %r и выводим из него следующий текст:" % filename
print txt.read()
Теперь откройте консоль и запустите вашу программу с параметром соотвествующим имени вашего файла с текстом (sample.txt):
В результате выполнения вашей программы содержимое файла sample.txt будет выведено на экран.
# Чтение и запись данных в файлы
Основные команды чтения и записи данных в файлы:
read() - читает содержимое файла, которое может быть также присвоено переменной.
readline() - считывает только одну строку из файла.
truncate() - удаляет все содержимое из файла.
write("текстовое содержимое") - записывает текстовое содержимое в файл.
close() - закрывает файл. (Аналогично команде File->Save.. в вашем текстовом редакторе.)
Запустите вашу программу my_programm.py, вставив в неё следующий код:
filename = raw_input ("Введите имя файла:")
target = open (filename, "w") # "w" означает открыть файл с разрешением на запись
print "Сейчас мы удалим все содержимое из файла %r." % filename
target.truncate()
line1 = raw_input("Строка 1:")
line2 = raw_input("Строка 2:")
line3 = raw_input("Строка 3:")
print "Теперь мы запишем в файл введенные строки."
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
print "Далее мы закроем файл."
Парамеры функции open()
"r" - открыть файл только для чтения.
"w" - открыть файл для записи.
"a" - открыть файл для добавления в него нового фрагмента.
# Копирование содержимого из одного файла в другой файл.
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print "Сейчас мы скопируем содержимое из файла %r в файл %r." % (from_file, to_file)
first_file = open(from_file)
file_content = open_from_file.read()
print "Содержимое копируемого файла занимает %d байт." % len(file_content)
print "Существует ли файл, в который мы будем вставлять содержимое? %r" % exists(to_file)
second_file = open(to_file, 'w')
second_file.write(file_content)
print "Копирование успешно завершено."
При запуске программы из коносли добавьте имя любого файла, из которого будет скопировано содержимое, и имя любого файла, в который оно будет вставлено:
my_programm.py copy.txt paste.txt
# Массивы - списки
the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']
change[0] = 'one'
print change[0]
print the_count
# Хэш - массивы - словари
cities = <
'CA': 'San Francisco',
'MI': 'Detroit',
'FL': 'Jacksonville'
>
# Добавим еще значения в массив.
cities['NY'] = 'New York'
cities['OR'] = 'Portland'
# Выведем некотрые значения из массива на экран.
print "NY - это: ", cities['NY']
print "OR - это: ", cities['OR']
for abbrev, city in cities.items():
print "%s соотвествует городу %s" % (abbrev, city)
city = cities.get('Texas', None)
if not city:
print "Простите, но Texas нет в массиве."
dogs = 10
cats = 20
if dogs > cats:
print "Собак больше, чем кошек."
elif dogs < cats:
print "Собак меньше, чем кошек."
else:
print "Число собак равно числу кошек."
# Условия могут быть вложенными. В этом случае вложенные условия отделяются дополнительными четыремя пробелами от левой границы экрана.
# В Python нет уловий вида switch-case.
# В Python циклы отличаются от классических. Основная идея в них - это перебор элементов, что в принципе и происходит в любом цикле в других языках программирования.
count = [1, 2, 3, 4, 5] # Это массив.
# В этом цикле производится перебор всех элементов массива.
for number in count:
print "Это счет: %d" % number
elements = [] # Так создается пустой массив
# Это пример классического цикла с шагом +1. Шаг цикла задается через range().
for i in range(0,10):
elements.append(i)
for i in elements:
print "Элемент %d был добавлен в массив." % i
# Циклы While
while i < 6:
print "В массив добавлено число %d" % i
numbers.append(i)
i = i + 1
# Определиение функции
def print_arguments (arg1, *argv):
# Все содержимое функции должно быть отделено 4 пробелами слева.
arg2, arg3 = argv
print "Аргумент 1: %r, аргумент 2: %r, аргумент 3: %r." % (arg1, arg2, arg3)
# Тело функции завершает на следующей строче, начинающейся без пробелов прямо от левой границы экрана.
# Выполнение функции
print_arguments ("Один", "Два", "Три")
Звездочка * у argv позволяет принять функции несколько аргументов в виде списка. В большинстве случаев такой способ передачи аргументов в функцию не используется.
# Функция, возвращающая значение, после своего выполнения.
def sum(a, b):
return a + b
print "Сумма равна: %d" % sum (2, 5)
# Функцию можно передавать в качестве аргумента и вызывать её через Callback.
def sum():
return 2 + 5
def callback(c):
return c()
print "Сумма равна: %d" % callback(sum)
# Функции могут возвращать несколько значений в виде спика, разделенного запятыми.
def list_values():
return "one", "two", "three"
var1, var2, var3 = list_values()
print var1
print var2
print var3
# Модули - импортирование кода из других файлов
# Для того, чтобы загрузить код из другого файла, необходимо сделать import.
# После этого вызов кода осуществляется через имя импортированного файла.
Файл mystuff.py
# Этот код размещен в файле mystuff.py
def apple():
print "I am apple!"
Файл my_programm.py
# Этот код размещен в основном исполняем файле my_programm.py
print mystuff.fruit
mystuff.apple
# Поскольку модули импортируются, то они могу существовать только в одном экземляре, в отличии от классов.
# Также можно импортировать из файла отдельные классы или функции с переменными.
Файл my_programm.py
from mystuff import apple
# Или можно импортировать все сразу, используя символ *.
Файл my_programm.py
from mystuff import *
# Классы и Объекты
# Классы представляют из себя мини-модули. Они предназначены для группировки и изолирования функций и данных. Но в отличии от модулей, классы могут существовать во множестве экземпляров, называемых объектами.
# Методы в классах всегда имеют всегда имеют первый аргумент под названием self.
class Employee:
pass # pass означает, что класс пустой, в нем пока ничего нет.
def work():
print "I am working."
john = Employee() # Создание объекта рабочий.
# Заполнение объекта данными
john.name = 'John Doe'
john.dept = 'computer lab'
john.salary = 1000
john.work = work
print john.name
print john.dept
print john.salary
txt = "Super text!"
# Методы в классах всегда имеют всегда имеют первый аргумент под названием self.
def __init__(self):
self.tangerine = "And now a thousand years between"
def apple(self):
print "I AM CLASSY APPLES!"
thing = MyStuff()
print thing.txt
print thing.tangerine
thing.apple()
class A(object):
def __init__(self, x): # атрибут получает значение в конструкторе
self.x = x
class A(object):
def __init__(self, x):
self._x = x
def getx(self): # метод для получения значения
return self._x
def setx(self, value): # присваивания нового значения
self._x = value
def delx(self): # удаления атрибута
del self._x
x = property(getx, setx, delx, "Свойство x") # определяем x как свойство
a = A(5)
# или a.x = 5
print a.x # Синтаксис доступа к атрибуту при этом прежний
def __init__(self, lyrics):
self.lyrics = lyrics
def sing_me_a_song(self):
for line in self.lyrics:
print line
happy_bday = Song(["Happy birthday to you",
"I don't want to get sued",
"So I'll stop right there"])
bulls_on_parade = Song(["They rally around the family",
"With pockets full of shells"])
# Для создания экземпляра класса, достаточно вызвать класс по имени и задать параметры конструктора:
class Point:
def __init__(self, x, y, z):
self.coord = (x, y, z)
def __repr__(self):
return "Point(%s, %s, %s)" % self.coord
p = Point(0.0, 1.0, 0.0)
# Специальные методы вызываются при создании экземпляра класса (конструктор) и при удалении класса (деструктор).
# В языке Python реализовано автоматическое управление памятью, поэтому деструктор требуется достаточно редко, для ресурсов, требующих явного освобождения.
class Line:
# Конструктор создает объект с начальными параметрами.
def __init__(self, p1, p2):
self.line = (p1, p2)
# Деструктор удаляет созданный объект из памяти компьютера.
def __del__(self):
print "Удаляется линия %s - %s" % self.line
# Создание объекта. Срабатывает метод __init(self, p1, p2)__
l = Line((0.0, 1.0), (0.0, 2.0))
# Удаление объекта. Срабатывает метод __del__
del l
def implicit(self):
print "PARENT implicit()"
class Child(Parent):
pass
dad = Parent()
son = Child()
# Наследованием и переопределение методов в потомках классов.
def override(self):
print "PARENT override()"
def override(self):
print "CHILD override()"
dad = Parent()
son = Child()
dad.override()
son.override()
# Явно указав имя класса, можно обратиться к методу родителя, как впрочем и любого другого объекта.
class Child(Parent):
def __init__(self):
Parent.__init__(self)
# В общем случае для получения класса-предка применяется функция super.
class Child(Parent):
def __init__(self):
super(Child, self).__init__(self)
# Таким образом в классе-потомке можно вызвать неизмененный родительский метод после его переопределения.
def altered(self):
print "PARENT altered()"
def altered(self):
print "CHILD, BEFORE PARENT altered()"
super(Child, self).altered()
print "CHILD, AFTER PARENT altered()"
dad = Parent()
son = Child()
# Класс-потомок также может наслежовать методы и атрибуты от нескольких классов-родителй.
class SuperFun(Child, BadStuff): # Класс наследует от 2-х классов.
pass
Получать доступ к классам и модулям можно тремя способами:
# стиль массива
mystuff['apples']
# стиль модуля
mystuff.apples()
print mystuff.tangerine
# стиль класса
thing = MyStuff()
thing.apples()
print thing.tangerine
Ключевые слова:
and
del
from
not
while
as
elif
global
or
with
assert
else
if
pass
yield
break
except
import
print
class
exec
in
raise
continue
finally
is
return
def
for
lambda
try
Типы переменных:
True
False
None
strings
numbers
floats
lists (массивы)
Осваиваем Python. Унция ноль. Введение.
Присоединяюсь к MaxElc, DarwinTenk и Devgru 🙂 Начинаю цикл статей посвященных Python. Сам я имею некоторый опыт обращения с PHP и Java. Но каждый раз, при относительном освоении какого-то инструмента — оставалось определённое неудовлетворение им, связанное с чем-то конкретным, и поиски продолжались. На сегодняшний день наиболее близко к идеалу в моих глазах стоит Python. Идеал недостижим — это понятно, посему и у Python есть недостатки. Прежде всего — это скорость выполнения, однако, эта проблема решаема несколькими путями и об этом мы обязательно поговорим чуть позднее.
Сам я начал осваивать Python буквально недавно. Начиная этот цикл статей — я преследую несколько целей. Во-первых, это дополнительная само мотивация + интерактивность, во-вторых, опыт. В-третьих, блуждая по просторам рунета — вижу, что Python куда менее популярен, чем в мире. Ситуацию надо исправлять 🙂
В соответствии с идеологией Python, а именно с тем, что одни из главных его козырей — это быстрота в освоении и скорость разработки, мы достаточно быстро, практически тезисно пронесёмся по основам синтаксиса и построения программ и перейдём к основной цели данного цикла — освоение django.
Итак, мы начинаем.
Архитектура
-
— стандартная реализация Python — альтернативная реализация Python. Основная цель которой — бесшовная интеграция с платформой Java. Состоит из java-классов, которые транслируют программный код на языке Python в java байт-код, который затем запускается на виртуальной машине Java (JVM). — реализация Python предназначенная для интеграции с .NET платформой.
- Shedskin C++ — нетрадиционный подход к выполнению программ на языке Python. Цель — оптимизация скорости выполнения. Преобразует исходный код Python в исходный код C++, который затем может быть скомпилирован в машинный код. — реализация PVM на самом языке Python + JIT компилятор.
Варианты запуска программ
На хабре уже была написана хорошая инструкция для новичков, как быстро организовать рабочую среду для разработки на Python и django. Если вы уже проделали описанную в ней последовательность действий, то это означает, что на вашей машине уже установлен интерпретатор python. В большинстве Linux дистрибутивов он установлен по-умолчанию.
Вариант 1. Интерактивный режим
Для попадания в интерактивный режим необходимо ввести в командной строке команду python.
$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello World!'
Hello World!
В интерактивном режиме инструкции выполняются построчно. Для того, чтобы выполнить блок кода, можно, к примеру, набрать в пустом текстовом файле следующие две команды:
str1 = 'Hello World!'
str2 = " It's my second script"
print 'import has been done successfully'
И сохранить их в файле hi.py. Далее в командной строчке используя команду cd перейти в тот каталог, в котором вы сохранили файл и набрать команду python.
Для импорта инструкций можно использовать инструкцию import <имя файла без расширения .py>. Файлы в языке Python являются модулями, которые внутри себя содержат пространство имён. Импортируя модуль мы получаем доступ к пространству имён верхнего уровня.
$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hi
import has been done successfully
>>> print hi.str1+hi.str2
Hello World! It's my second script
Используя в инструкции конструкцию вида: hi.str1, мы обращаемся к имени str1, определённом внутри модуля hi.
Строки, числа в языке Python — это тоже объекты. Здесь прослеживается наследование парадигмы берущей начало от языка SmallTalk «Всё — объекты». Однако, если мне не изменяет память там речь шла и о том, что операторы — тоже были объектами. В python оператор «+» — это перегруженный оператор для строк выполняющий конкатенацию.
Для импортирования конкретных имён можно использовать инструкцию from:
>>> from hi import str1
>>> print str1
Hello World!
После чего мы сможем обращаться к импортируемому имени непосредственно.
После внесения каких-то изменений в файл, для того чтобы изменения вступили в силу — необходимо перезагрузить модуль с помощью функции reload().
Для получения списка всех доступных имён модуля можно использовать функцию dir():
>>> dir(hi)
['__builtins__', '__doc__', '__file__', '__name__', 'str1', 'str2']
Вариант 2. Запуск из командной строки.
Запустить сценарий из командной строки можно следующим образом:
Так же сценарию можно передавать параметры командной строки. Доступ к ним из сценария можно получить, импортировав встроенный модуль sys. Изменим файл hi.py следующим образом:
import sys
print sys.argv
После чего вызовем его из команжной строки, передав несколько произвольных параметров:
$ python hi.py 1 2 3 'param-pam-pam'
['hi.py', '1', '2', '3', 'param-pam-pam']
В результате получим список, содержащий в себе переданные параметры. Список — это тоже конструкция языка Python. О списках речь пойдёт в следующих статьях.
Потоки ввода и вывода сценария можно перенаправлять с помощью средств командной оболочки, например так:
$ python hi.py 1 2 3 'param-pam-pam' > text.txt
Вариант 3. IDE.
Интерактивный режим удобен в некоторых случаях, например, когда нужно поэкспериментировать с какой-то определённой инструкцией. Однако, постоянно работать в нём неудобно т.к. Нужно постоянно вспоминать про перезагрузку модулей.
Поэтому гораздо удобнее воспользоваться описанной выше процедурой настройки IDE и запускать программы из неё. Так же при разработке программ на Python вполне приемлем вариант написания кода в блокноте с подсветкой синтаксиса и запуском программы из консоли.
На сегодня всё. В следующих статьях мы перейдём непосредственно к изучению конструкций языка. Не сомневаюсь, отклики будут и я буду на них ориентироваться.
Спасибо за внимание!