Замечание для опытных программистов
Замечание для опытных программистов
Нет отдельного типа ‘long int’ (длинное целое). Целые числа по умолчанию могут быть
произвольной длины.
7.4 Строки
Строка – этопоследовательность символов. Чаще всего строки – это просто некоторые наборы слов.
Слова могут быть как на английском языке, так и на любом другом, поддерживаемом
стандартом Unicode, что означает почти на любом языке мира.
Замечание для опытных программистов
В Python 3 нет ASCII-строк, потому что Unicode является надмножеством (включает в
себя) ASCII. Если необходимо получить строку строго в кодировке ASCII, используйте
str.encode("ascii"). Подробнее смотрите в обсуждении этого вопроса на StackOverflow.
По умолчанию все строки в Unicode.
Я могу с уверенностью сказать, что вы будете использовать строки почти в каждой ва-
шей программе на Python. Поэтому уделите внимание тому, как работать со строками в
Python.
1 “literal” – англ. «буквальный»; вспомните «литера» (син. «буква»). (прим. перев.)
7.4.1 Одинарные кавычки
Строку можно указать, используя одинарные кавычки, как например, 'Фраза в кавыч-
ках'. Все пробелы и знаки табуляции сохранятся, как есть.
7.4.2 Двойные кавычки
Строки в двойных кавычках работают точно так же, как и в одинарных. Например,
"What's your name?".
7.4.3 Тройные кавычки
Можно указывать «многострочные» строки с использованием тройных кавычек (""" или
'''). В пределах тройных кавычек можно свободно использовать двойные или тройные
кавычки. Например:
'''Это многострочная строка. Это её первая строка.
Это её вторая строка.
"What's your name?", - спросил я.
Он ответил: "Bond, James Bond."
'''
7.4.4 Строки неизменяемы
Это означает, что после создания строки её больше нельзя изменять. На первый взгляд
это может показаться недостатком, но на самом деле это не так. В последствии на примере
разных программ мы увидим, почему это не является ограничением.
7.4.5 Объединение строковых констант
Если расположить рядом две строковых константы, Python автоматически их объеди-
нит. Например, 'What\'s ' 'your name?' автоматически преобразуется в "What's your
name?".
Замечание для программистов на C/C++
В Python нет отдельного типа данных char (символ). В нём нет нужды, и я уверен, что вы
не будете по нему скучать.
7.4.6 Метод format
Иногда бывает нужно составить строку на основе каких-либо данных. Вот здесь-то и при-
гождается метод format().
Сохраните следующие строки в файл str_format.py:
age = 26
name = 'Swaroop'
print('Возраст {0} -- {1} лет.'.format(name, age))
print('Почему {0} забавляется с этим Python?'.format(name))
Вывод:
$ python str_format.py
Возраст Swaroop -- 26 лет.
Почему Swaroop забавляется с этим Python?
Как это работает:
В строку могут быть включены определённые обозначения, а впоследствии может быть вызван метод format для замещения этих обозначений соответствующими аргументами.
Взгляните на первый случай применения обозначений, где мы пишем {0}, и это соответствует переменной name, являющейся первым аргументом метода format. Аналогично, второе обозначение {1} соответствует переменной age, являющейся вторым аргументом метода format. Заметьте, что Python начинает отсчёт с 0, поэтому первая позиция – номер 0, вторая – номер 1 и т.д.
Заметьте, мы ведь могли добиться того же самого результата и объединением строк: 'Возраст' + name + ' -- ' + str(age) + ' лет.', однако вы сами видите, как это некрасиво, и как легко в таком случае допустить ошибку. Во- вторых, преобразование в строку делается методом format автоматически, в отличие от явного преобразования в нашем примере. В-третьих, используя метод format, мы можем изменить сообщение, не затрагивая используемых переменных, и наоборот.
На всякий случай имейте в виду, что цифры здесь не обязательны. Можно было бы просто написать:
age = 26
name = 'Swaroop'
print('Возраст {} -- {} лет.'.format(name, age))
print('Почему {} забавляется с этим Python?'.format(name))
и получить такой же результат, как и ранее.
В методе format Python помещает значение каждого аргумента в обозначенное место. Могут быть и более детальные обозначения, как то:
>>> # десятичное число (.) с точностью в 3 знака для плавающих:
... '{0:.3}'.format(1/3)
'0.333'
>>> # заполнить подчёркиваниями (_) с центровкой текста (^) по ширине 11:
... '{0:_^11}'.format('hello')
'___hello___'
>>> # по ключевым словам:
... '{name} написал {book}'.format(name='Swaroop', book='A Byte of Python')
'Swaroop написал A Byte of Python'
Детально такие обозначения форматов описаны в Предложении по расширению Python
PEP 3101.
7.5 Переменные
Использование одних лишь литеральных констант может скоро наскучить – нам ведь
нужен способ хранения любой информации и манипулирования ею. Вот здесь на сце-
ну выходятпеременные. Слово «переменные» говорит само за себя – их значение может
меняться, а значит, вы можете хранить в переменной всё, что угодно. Переменные – это
просто области памяти компьютера, в которых вы храните некоторую информацию. В
отличие от констант, к такой информации нужно каким-то образом получать доступ,
поэтому переменным даются имена.
7.6 Имена идентификаторов
Переменные – это частный случай идентификаторов. Идентификаторы – это имена, при- своенные чему-то для его обозначения. При выборе имён для идентификаторов необходимо соблюдать следующие правила:
• Первым символом идентификатора должна быть буква из алфавита (символ ASCII в верхнем или нижнем регистре, или символ Unicode), а также символ подчёркивания (“_”).
• Остальная часть идентификатора может состоять из букв (символы ASCII в верхнем или нижнем регистре, а также символы Unicode), знаков подчёркивания (“_”) или цифр (0-9).
• Имена идентификаторов чувствительны к регистру. Например, myname и myName – это не одно и то же. Обратите внимание на “n” в нижнем регистре в первом случае и “N” в верхнем во втором.
• Примеры допустимых имён идентификаторов: i, __my_name, name_23, a1b2_c3 и любые_символы_utf8_δξѪђёўЩӆΞέά.
• Примеры недопустимых имён идентификаторов: 2things, здесь есть пробелы, my-name, >a1b2_c3 и "идентификатор_в_кавычках".
7.7 Типы данных
Переменные могут хранить значения разных типов, называемых типами данных. Основными типами являются числа и строки, о которых мы уже говорили. В дальнейших главах мы увидим, как создавать свои собственные типы при помощи классов.
7.8 Объекты
Помните, Python рассматривает всё, что есть в программе, как объекты. Имеется в виду, в самом общем смысле. Вместо того, чтобы говорить “нечто”, мы говорим “объект”.