Язык программирования Python - [6]
>последовательность[нач:кон:шаг]
где >нач
— промежуток начала среза, >кон
— конца среза, >шаг
— шаг. По умолчанию >нач=0
, >кон=len(последовательность)
, >шаг=1
, если >шаг
не указан, второе двоеточие можно опустить.
А теперь пример работы со срезами:
>>>> s = range(10)
>>>> s
>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>> s[0:3]
>[0, 1, 2]
>>>> s[-1:]
>[9]
>>>> s[::3]
>[0, 3, 6, 9]
>>>> s[0:0] = [-1, -1, -1]
>>>> s
>[-1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>> del s[:3]
>>>> s
>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Как видно из этого примера, с помощью срезов удобно задавать любую подстроку, даже если она нулевой длины, как для удаления элементов, так и для вставки в строго определенное место.
Тип dict
Словарь (хэш, ассоциативный массив) — это изменчивая структура данных для хранения пар ключ–значение, где значение однозначно определяется ключом. В качестве ключа может выступать неизменчивый тип данных (число, строка, кортеж и т.п.). Порядок пар ключ–значение произволен. Ниже приведен литерал для словаря и пример работы со словарем:
>d = {1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>d0 = {0: 'zero'}
>print d[1] # берется значение по ключу
>d[0] = 0 # присваивается значение по ключу
>del d[0] # удаляется пара ключ–значение с данным ключом
>print d
>for key, val in d.items(): # цикл по всему словарю
> print key, val
>for key in d.keys(): # цикл по ключам словаря
> print key, d[key]
>for val in d.values(): # цикл по значениям словаря
> print val
>d.update(d0) # пополняется словарь из другого
>print len(d) # количество пар в словаре
Тип file
Объекты этого типа предназначены для работы с внешними данными. В простом случае — это файл на диске. Файловые объекты должны поддерживать основные методы: >read()
, >write()
, >readline()
, >readlines()
, >seek()
, >tell()
, >close()
и т.п.
Следующий пример показывает копирование файла:
>f1 = open("file1.txt", "r")
>f2 = open("file2.txt", "w")
>for line in f1.readlines():
> f2.write(line)
>f2.close()
>f1.close()
Стоит заметить, что кроме собственно файлов в Python используются и файлоподобные объекты. В очень многих функциях просто неважно, передан ли ей объект типа >file
или другого типа, если он имеет все те же методы (и в том же смысле). Например, копирование содержимого по ссылке (URL) в файл >file2.txt
можно достигнуть, если заменить первую строку на
>import urllib
>f1 = urllib.urlopen("http://python.onego.ru")
О модулях, классах, объектах и функциях будет говориться на других лекциях.
Выражения
В современных языках программирования принято производить большую часть обработки данных в выражениях. Синтаксис выражений у многих языков программирования примерно одинаков. Синтаксис выражений Python не удивит программиста чем–то новым. (Разве что цепочечные сравнения могут приятно порадовать.)
Приоритет операций показан в нижеследующей таблице (в порядке уменьшения). Для унарных операций >x
обозначает операнд. Ассоциативность операций в Python — слева–направо, за исключением операции возведения в степень (>**
), которая ассоциативна справа налево.
Операция | Название |
---|---|
>lambda | лямбда–выражение |
>or | логическое ИЛИ |
>and | логическое И |
>not x | логическое НЕ |
>in , >not in | проверка принадлежности |
>is , >is not | проверка идентичности |
>< , ><= , >> , >>= , >!= , >== | сравнения |
>| | побитовое ИЛИ |
>^ | побитовое исключающее ИЛИ |
>& | побитовое И |
><< , >>> | побитовые сдвиги |
>+ , >- | сложение и вычитание |
>* , >/ , >% | умножение, деление, остаток |
>+x , >-x | унарный плюс и смена знака |
>~x | побитовое НЕ |
>** | возведение в степень |
>x.атрибут | ссылка на атрибут |
>x[индекс] | взятие элемента по индексу |
>x[от:до] | выделение среза (от и до) |
>f(аргумент, ...) | вызов функции |
>( ... ) | скобки или кортеж |
>[ ... ] | список или списковое включение |
>{кл:зн, ...} | словарь пар ключ–значение |
>`выражения` | преобразование к строке (repr) |
Таким образом, порядок вычислений операндов определяется такими правилами:
1. Операнд слева вычисляется раньше операнда справа во всех бинарных операциях, кроме возведения в степень.
2. Цепочка сравнений вида >a < b < c ... y < z
фактически равносильна: >(а < b) and (b < c) and ... and (y < z)
.
3. Перед фактическим выполнением операции вычисляются нужные для нее операнды. В большинстве бинарных операций предварительно вычисляются оба операнда (сначала левый), но операции >or
и >and
, а также цепочки сравнений вычисляют такое количество операндов, которое достаточно для получения результата. В невычисленной части выражения в таком случае могут даже быть неопределенные имена. Это важно учитывать, если используются функции с побочными эффектами.
4. Аргументы функций, выражения для списков, кортежей, словарей и т.п. вычисляются слева–направо, в порядке следования в выражении.
В случае неясности приоритетов желательно применять скобки. Несмотря на то, что одни и те же символы могут использоваться для разных операций, приоритеты операций не меняются. Так, >%
имеет тот же приоритет, что и >*
, а потому в следующем примере скобки просто необходимы, чтобы операция умножения произошла перед операцией форматирования:
>print "%i" % (i*j)
Выражения могут фигурировать во многих операторах Python и даже как самостоятельный оператор. У выражения всегда есть результат, хотя в некоторых случаях (когда выражение вычисляется ради побочных эффектов) этот результат может быть «ничем» —
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.