JavaRush /Курсы /Модуль 1: Python Core /Важные дополнения

Важные дополнения

Модуль 1: Python Core
4 уровень , 5 лекция
Открыта

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]
2
Задача
Модуль 1: Python Core, 4 уровень, 5 лекция
Недоступна
Ты ему слово, он тебе ссылку
Ты ему слово, он тебе ссылку
2
Задача
Модуль 1: Python Core, 4 уровень, 5 лекция
Недоступна
Неизвестность
Неизвестность
1
Опрос
Преобразование типов,  4 уровень,  5 лекция
недоступен
Преобразование типов
Преобразование типов
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anton Уровень 5
1 января 2025
"Напишите программу, которая создает два списка, присваивает один из них другой переменной"... А два то зачем создавать? Один создали, присвоили и далее по условию. "должна присвоить создать вторую переменную и присвоить" - "присвоить создать"?
Alexander Уровень 5
27 декабря 2024
Задача про None странная. Непонятно зачем лишние действия делать, если без None можно узнать о пустых переменных.
UnknownReboot Уровень 11
17 декабря 2024
Немного не понятно про оператор is из лекции
Anonymous #2637008 Уровень 8 Expert
29 декабря 2024
оператор is сравнивает ссылки проверяемых переменных, если обе ссылки ведут на один и тот же объект в памяти, то возращается true, иначе false оператор == сравнивает значение переменных, а не на что они ссылаются.
Roman Уровень 5
3 января 2025
Красота тернарных операторов)