Наоми Седер - Python. Экспресс-курс
- Название:Python. Экспресс-курс
- Автор:
- Жанр:
- Издательство:Питер
- Год:2019
- ISBN:978-5-4461-0908-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Наоми Седер - Python. Экспресс-курс краткое содержание
Наоми Седер рассказывает не только об основных особенностях языка Python, но и его объектно-ориентированных возможностях, которые появились в Python 3. Данное издание учитывает все изменения, которые произошли с языком за последние 5 лет, а последние 5 глав рассказывают о работе с большими данными.
Python. Экспресс-курс - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
С другой стороны, переменные Python на ведра не похожи. Они ближе к биркам или ярлыкам, которые ссылаются на объекты из пространства имен интерпретатора Python. На один объект может ссылаться любое количество ярлыков (или переменных), и при изменении этого объекта значение, на которое ссылаются все эти переменные, тоже изменяется.
Чтобы понять, что это означает, рассмотрим следующий простой фрагмент: >>> a = [1, 2, 3]
>>> b = a
>>> c = b
>>> b[1] = 5
>>> print(a, b, c)
[1, 5, 3] [1, 5, 3] [1, 5, 3]
Если рассматривать переменные как контейнеры, такой результат выглядит странно. Как изменение содержимого одного контейнера приводит к одновременному изменению содер -жимого двух других? Но если понимать, что переменные — всего лишь ярлыки, ссылающиеся на объекты, вполне логично, что изменение объекта, к которому относятся все три ярлыка, отразится сразу во всех местах.
Если переменные ссылаются на константы или неизменяемые значения, различие уже не столь очевидно:
>>> a = 1
>>> b = a
>>> c = b
>>> b = 5
>>> print(a, b, c)
1 5 1
Так как объекты, на которые они ссылаются, изменяться не могут, поведение переменных в данном случае соответствует любой аналогии. Собственно, после третьей строки a, b и c ссылаются на один неизменяемый объект целого числа со значением 1. Следующая строка b = 5 заставляет b ссылаться на объект целого числа 5, но не изменяет ссылки a или c. Переменным Python могут присваиваться любые объекты, тогда как в C и многих других языках переменная может хранить значения только того типа, с которым она была объявлена. Ниже приведен абсолютно нормальный код Python: >>> x = "Hello"
>>> 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'
Обычные строки не могут разбиваться символами новой строки. Следующий фрагмент работать не будет:
# При выполнении этого кода Python произойдет ОШИБКА -- простая разбивка строк не работает.
x = "This is a misguided attempt to
put a newline into a string without using backslash-n" Но в Python поддерживаются строки в утроенных кавычках, которые позволяют выполнять разбивку, а также включать в текст одинарные и двойные кавычки без экранирования символом \ :
x = """Starting and ending a string with triple " characters permits embedded newlines, and the use of " and ' without backslashes"""
Теперь x содержит весь текст, заключенный между ограничителями """ . (Вместо утроенных двойных кавычек можно использовать утроенные одинарные кавыч-ки ''' — результат будет тем же.)
Читать дальшеИнтервал:
Закладка: