>>> Выражения – это предложения
Выражения – полноценные предложения языка Python:
python
>>> 3.14
3.14
>>> [1,2] + [3]
[1, 2, 3]
>>> 'Привет, Python'
'Привет, Python'
>>> """Можно написать скрипт из одних выражений,
... и он выполнится без ошибок.
... """
'Можно написать скрипт из одних выражений,\nи он выполнится без ошибок.\n'
>>>
Документирующие строки Python (docstrings) – это выражения, состоящие из строкового литерала, а не особая конструкция, требующая специальной обработки.
>>> Всё – объекты
В Python всё – объекты или, иными словами, экземпляры некоторого класса. Узнать класс объекта позволяет функция type()
:
>>> type(1)
<class 'int'>
>>> s = 'hello'
>>> type(s)
<class 'str'>
>>> import math
>>> type(math)
<class 'module'>
Каждый объект в Python имеет уникальный идентификатор, возвращаемый функцией id()
:
>>> id(1)
1580032224
>>> id(s)
1642751040792
>>> id(math)
1642751050600
>>> Классификация животных
Объекты Python бывают изменяемые (mutable) и неизменяемые (immutable).
Объекты следующих встроенных классов неизменяемы: NoneType
, bool
, int
, float
, complex
, str
, tuple
, frozenset
. Так, при попытке изменить строку или число мы получим новый объект, а не прежний:
>>> s = 'hello'
>>> id(s)
2397821304424
>>> s += ' Python'
>>> id(s)
2397821338352
>>> x = 1
>>> id(x)
1607098592
>>> x += 1
>>> id(x)
1607098624
Объекты следующих встроенных классов изменяемы: list
, dict
, set
. Список или словарь изменяются, но и после изменения это все те же объекты с теми же id
:
>>> a = [0, 1, 2]
>>> id(a)
2397821326408
>>> a[0] = 3
>>> id(a) # тот же список
2397821326408
>>> d = {'a': 0, 'b': 2}
>>> id(d)
2397821291976
>>> d['a'] = 1
>>> id(d) # тот же словарь
2397821291976
>>> Единственный и неизменный
Неизменяемые объекты – это, по сути, константы, что позволяет держать в памяти только один неизменяемый объект с данным значением. Так, объекты None
, True
и False
существуют в единственных экземплярах во время выполнения программы.
Независимо от того, как мы получили значение True
, оно представлено одним и тем же объектом:
>>> id(1 == 1) == id(True)
True
>>> id(bool(1)) == id(not False)
True
Это же справедливо для None
:
>>> # функция print() возвращает None
... res = print()
>>> id(res) == id(None)
True
Строки – неизменяемые объекты класса str
– демонстрируют такое же поведение:
>>> s = 'hi'
>>> id('hi') == id(s)
True
>>> s2 = 'h' + 'i'
>>> id(s) == id(s2)
True
Впрочем, такое поведение не обязательно для всех неизменяемых объектов и зависит от реализации.
>>> Цепочки сравнений
В Python можно строить цепочки сравнений, например:
>>> 1 < 3 < 5
True
Это была проверка вхождения среднего члена в диапазон, заданный крайними членами. Логически эквивалентно выражению
>>> 1 < 3 and 3 < 5
True
Ещё примеры цепочек сравнений:
>>> 'hi' == 'h'+'i' == 'HI'.lower()
True
>>> 100 > 50 >= 3.14 > -1
True
>>> 1 < 2 != 5 == 10/2 > 3
True
Не злоупотребляйте такими цепочками! Последняя почти нечитабельна и с-трудом-понимабельна.
Комментариев нет:
Отправить комментарий