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

Важливі доповнення

Відкрита

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 або False")

Порівняння з None

Перевірка змінної на None повинна здійснюватися з використанням оператора is, а не ==. Оператор is перевіряє ідентичність, не рівність значень.

a = None
if a is None:
    print("a is None")
else:
    print("a має значення")

None у функціях

None часто використовується у функціях, які не повинні явно повертати значення. Якщо функція не повертає значення, вона неявно повертає None.

def func():
    print("Ця функція повертає 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 лекція
Недоступна
Невідомість
Невідомість
Коментарі (2)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Andriy Trubchanin
Рівень 23
6 лютого 2025, 17:04
print(f"{a} + {b} = {int(a)+int(b)}") Помилка: потрібно перетворити введені значення на числа Я перетворив. В чому проблема?
9 грудня 2024, 11:19
Якщо я не помиляюсь, умова и перший пункт вимог говорять про різне. Умова вимагає створити два списки а вимоги - один. Рішення проходить з одним списком