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]
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ