>>> print(x)
Hello
>>> x = 5
>>> print(x)
5
Переменная x сначала ссылается на строковый объект "Hello" , а потом на объект целого числа 5 . Конечно, и этой возможностью можно злоупотреблять, потому что произвольное присваивание одному имени переменной разных типов данных усложняет понимание кода.
Новое присваивание переопределяет все предыдущие. Команда del удаляет пере-менную. При попытке вывести содержимое переменной после ее удаления проис-ходит ошибка, как если бы переменная никогда не создавалась: >>> x = 5
>>> print(x)
>>> del x
>>> print(x)
Traceback (most recent call last):
File "", line 1, in
NameError: name 'x' is not defined
>>>
Здесь мы видим трассировку , которая выводится при возникновении ошибки, называемой исключением . Последняя строка сообщает, какое исключение было обнаружено; в данном случае это исключение NameError для x . После удаления x уже не является действительным именем переменной. В данном случае трассировка возвращает только line 1, in <���модуль> , потому что в интерактивном режиме была отправлена только одна строка. В общем случае возвращается полная динамическая структура вызовов существующей функции на момент возникновения ошибки. Если вы работаете в IDLE, то получаете ту же информацию с незначительными отличиями. Код может выглядеть примерно так:
Traceback (most recent call last):
File "", line 1, in
print(x)
NameError: name 'x' is not defined
В главе 14 этот механизм описан более подробно. Полный список возможных исключений и их причин содержится в документации стандартной библиотеки Python. Используйте алфавитный список для поиска описаний любых полученных конкретных исключений (таких, как NameError ).
В именах переменных учитывается регистр символов; они могут содержать любые алфавитно-цифровые символы, а также символы подчеркивания, но должны на-чинаться с буквы или символа подчеркивания. За дополнительной информацией о создании имен переменных в стиле Python обращайтесь к разделу 4.10.
4.4. Выражения
Python поддерживает арифметические и другие математические выражения, ко-торые покажутся знакомыми большинству читателей. Следующий фрагмент вы-числяет среднее арифметическое чисел 3 и 5, сохраняя результат в переменной z : x = 3
y = 5
z = (x + y) / 2
Следует помнить, что арифметические операторы, использующие только целые числа, не всегда возвращают целое число. Хотя все значения являются целыми числами, оператор деления (начиная с Python 3) возвращает число с плавающей точкой, так что дробная часть не теряется. Если же вы хотите выполнить традицион-ное целочисленное деление, возвращающее округленное целое число, используйте оператор // .
В выражениях действуют стандартные правила приоритета операций. Если не включить круглые скобки в последнюю строку, то код будет вычисляться в по-рядке x + (y / 2) .
Выражения не обязаны включать только цифровые значения; строки, логи-ческие значения и многие другие типы объектов также могут использоваться в вы ражениях. Эти объекты будут более подробно рассмотрены по мере исполь-зования.
ПОПРОБУЙТЕ.САМИ:.ПЕРЕМЕННЫЕ.И.ВЫРАЖЕНИЯ Создайте в оболочке Python несколько переменных. Что произойдет, если вы попробуете включить пробелы, дефисы или другие неалфавитные символы в имя переменной? Поэкспериментируйте с более сложными выражениями — напри-мер, x = 2 + 4 * 5 — 6/3 . Используйте круглые скобки для группировки чисел и посмотрите, как изменяется результат по сравнению с исходным выражением без группировки.
4.5. Строки
Вы уже видели, что в Python, как и в большинстве других языков программирова-ния, строки заключаются в двойные кавычки. Следующий пример сохраняет строку "Hello, World" в переменной x :
x = "Hello, World"
Символ \ (обратный слеш) используется для экранирования символов, то есть для назначения им специального смысла. \n — символ новой строки, \t — символ табуляции, \\ — один обычный символ обратного слеша, а \" — обычный символ двойной кавычки (такой символ строки не завершает): x = "\tThis string starts with a \"tab\"."
x = "This string contains a single backslash(\\)."
Вместо двойных кавычек можно использовать одинарные. Следующие две строки делают одно и то же:
x = "Hello, World"
x = 'Hello, World'
Единственное различие заключается в том, что в строках, заключенных в одинар-ные кавычки, не обязательно экранировать символы " , а в строках, заключенных в двойные кавычки, — символы ' :
x = "Don't need a backslash"
x = 'Can\'t get by without a backslash'
x = "Backslash your \" character!"
x = 'You can leave the " alone'
Обычные строки не могут разбиваться символами новой строки. Следующий фрагмент работать не будет:
Читать дальше