Язык программирования Python - [3]
>True
.Литералы >True
и >False
для обозначения логических значений появились в Python 2.3.
Цикл ДЛЯ выполняет тело цикла для каждого элемента последовательности. В следующем примере выводится таблица умножения:
>for i in range(1, 10):
> for j in range(1, 10):
> print "%2i" % (i*j),
> print
Здесь циклы >for
являются вложенными. Функция >range()
порождает список целых чисел из полуоткрытого диапазона >[1, 10)
. Перед каждой итерацией счетчик цикла получает очередное значение из этого списка. Полуоткрытые диапазоны общеприняты в Python. Считается, что их использование более удобно и вызывает меньше программистских ошибок. Например, >range(len(s))
порождает список индексов для списка >s
(в Python–последовательности первый элемент имеет индекс >0
). Для красивого вывода таблицы умножения применена операция форматирования >%
(для целых чисел тот же символ используется для обозначения операции взятия остатка от деления). Строка форматирования (задается слева) строится почти как строка форматирования для >printf
из C.
Функции
Программист может определять собственные функции двумя способами: с помощью оператора >def
или прямо в выражении, посредством >lambda
. Второй способ (да и вообще работа с функциями) будет рассмотрен подробнее в лекции по функциональному программированию на Python, а здесь следует привести пример определения и вызова функции:
>def cena(rub, kop=0):
> return "%i руб. %i коп." % (rub, kop)
>print cena(8, 50)
>print cena(7)
>print cena(rub=23, kop=70)
В этом примере определена функция двух аргументов (из которых второй имеет значение по умолчанию — >0
). Вариантов вызова этой функции с конкретными параметрами также несколько. Стоит только заметить, что при вызове функции сначала должны идти позиционные параметры, а затем, именованные. Аргументы со значениями по умолчанию должны следовать после обычных аргументов. Оператор >return
возвращает значение функции. Из функции можно возвратить только один объект , но он может быть кортежем из нескольких объектов.
После оператора >def
имя >cena
оказывается связанным с функциональным объектом.
Исключения
В современных программах передача управления происходит не всегда так гладко, как в описанных выше конструкциях. Для обработки особых ситуаций (таких как деление на ноль или попытка чтения из несуществующего файла) применяется механизм исключений. Лучше всего пояснить синтаксис оператора >try–except
следующим примером:
>try:
> res = int(open('a.txt').read())/int(open('c.txt').read())
> print res
>except IOError:
> print "Ошибка ввода–вывода"
>except ZeroDivisionError:
> print "Деление на 0"
>except KeyboardInterrupt:
> print "Прерывание с клавиатуры"
>except:
> print "Ошибка"
В этом примере берутся числа из двух файлов и делятся одно на другое. В результате этих нехитрых действий может возникнуть несколько исключительных ситуаций, некоторые из них отмечены в частях >except
(здесь использованы стандартные встроенные исключения Python). Последняя часть >except
в этом примере улавливает все другие исключения, которые не были пойманы выше. Например, если хотя бы в одном из файлов находится нечисловое значение, функция >int()
возбудит исключение >ValueError
. Его–то и сможет отловить последняя часть >except
. Разумеется, выполнение части >try
в случае возникновения ошибки уже не продолжается после выполнения одной из частей >except
.
В отличие от других языков программирования, в Python исключения нередко служат для упрощения алгоритмов. Записывая оператор >try–except
, программист может думать так: «попробую, а если сорвется — выполнится код в >except
». Особенно часто это используется для выражений, в которых значение получается по ключу из отображения:
>try:
> value = dict[key]
>except:
> value = default_value
Вместо
>if dict.has_key(key):
> value = dict[key]
>else:
> value = default_value
Пример уже несколько устаревшей идиомы языка Python иллюстрирует только дух этого подхода: в современном Python лучше записать так >value = dict.get(key, default_value)
.
Исключения можно возбуждать и из программы. Для этого служит оператор >raise
. Заодно следующий пример показывает канонический способ определения собственного исключения:
>class MyError(Exception):
> pass
>try:
> ...
> raise MyError, "my error 1"
> ...
>except MyError, x:
> print "Ошибка:", x
Кстати, все исключения выстроены в иерархию классов, поэтому >ZeroDivisionError
может быть поймана как >ArithmeticError
, если соответствующая часть >except
будет идти раньше.
Для утверждений применяется специальный оператор >assert
. Он возбуждает >AssertionError
, если заданное в нем условие неверно. Этот оператор используют для самопроверки программы. В оптимизированном коде он не выполняется, поэтому строить на нем логику алгоритма нельзя. Пример:
>c = a + b
>assert c == a + b
Кроме описанной формы оператора, есть еще форма >try–finally
для гарантированного выполнения некоторых действий при передаче управления изнутри оператора >try–finally
вовне. Он может применяться для освобождения занятых ресурсов, что требует обязательного выполнения, независимо от произошедших внутри катаклизмов:
>try:
> ...
>finally:
> print "Обработка гарантированно завершена"
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.