6.1 Переменные — это ссылки
В Python переменные представляют собой ссылки на объекты, а не саму переменную. Это означает, что, когда вы создаете переменную в Python, вы просто создаете ссылку на объект в памяти.
Эта особенность языка имеет важные последствия для работы с переменными, особенно при передаче объектов в функции или их присваивании другим переменным.
Когда вы создаете переменную и присваиваете ей значение, Python выделяет объект в памяти для этого значения и делает переменную ссылкой на этот объект. Если вы присвоите одну переменную другой, новая переменная будет ссылаться на тот же объект, что и исходная переменная. Это означает, что изменения, сделанные через одну переменную, отразятся и на другой, если объект изменяемый.
Пример:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Выведет: [1, 2, 3, 4]
Мы добавляли число 4
в переменную b
, но он
добавился и в список в переменной a
, т.к. на самом деле обе переменные — это всего лишь ссылки на объект список [1, 2, 3].
6.2 Неизменяемые объекты
В Python объекты делятся на изменяемые и неизменяемые. Изменяемые объекты, такие как списки и словари, можно изменять после создания.
Неизменяемые объекты, такие как строки и числа, не могут быть изменены после создания. Когда вы работаете с неизменяемыми объектами, изменения приводят к созданию нового объекта:
Присваивание никогда не меняет объект:
a = 5 # a хранит ссылку на объект 5
b = a # b тоже хранит ссылку на объект 5
b = 3 # теперь b хранит ссылку на объект 3
print(a) # Выведет: 5
Объект можно изменить, вызвав его функцию:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Выведет: [1, 2, 3, 4]
Но есть неизменяемые объекты, у которых есть функции. Эти функции не меняют исходный объект, а возвращают новый, который содержит новый результат:
name = "Alex"
print(name) # Выведет: Alex
name2 = name.lower()
print(name2) # Выведет: alex
Строки — это неизменяемые объекты. И хотя у них есть методы, эти методы никогда не меняют объект строки — вместо этого они всегда возвращают новую строку (новый объект). Старый объект при этом остается прежним.
6.3 Работа с типом None
В Python есть специальный тип данных, представляющий отсутствие значения —
None
. Он используется для обозначения пустых переменных или как
возвращаемое значение функций, которые ничего не возвращают. Понимание None
важно для управления поведением программы, особенно в контексте условных
операторов и работы с данными.
Основы использования None
None
это единственный экземпляр класса NoneType
.
Он используется для указания того, что переменная не имеет значения. В
условиях None
оценивается как ложное (False
).
a = None
if a:
print("a is True")
else:
print("a is None or False")
Сравнение с None
Проверка переменной на None должна производиться с использованием
оператора is
, а не ==. Оператор is
проверяет
идентичность, не равенство значений.
a = None
if a is None:
print("a is None")
else:
print("a has value")
None в функциях
None
часто используется в функциях, которые не должны явно
возвращать значение. Если функция не возвращает значение, она неявно
возвращает None
.
def func():
print("This function returns None")
result = func()
print(result) # Выведет: None
None и списки
None
может быть использован в списках, кортежах или других
коллекциях для указания отсутствия элемента на определенной позиции.
my_list = [1, None, 3]
print(my_list) # Выведет: [1, None, 3]
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ