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 або 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]
1
Опитування
Перетворення типів, рівень 4, лекція 5
Недоступний
Перетворення типів
Перетворення типів
Коментарі (2)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Andriy Trubchanin Рівень 23
6 лютого 2025
print(f"{a} + {b} = {int(a)+int(b)}") Помилка: потрібно перетворити введені значення на числа Я перетворив. В чому проблема?
9 грудня 2024
Якщо я не помиляюсь, умова и перший пункт вимог говорять про різне. Умова вимагає створити два списки а вимоги - один. Рішення проходить з одним списком