Как са устроени променливите в Python?
Отговор от AI
sobes.tech AI
Променливите в Python не са контейнери за данни, а по-скоро етикети или имена, които се отнасят към обекти в паметта.
Когато присвоите стойност на променлива, вие не копирате тази стойност, а създавате препратка към съществуващ или създаван обект.
Основни концепции:
- Имена на променливи: Могат да съдържат букви (латински), цифри и долна черта. Не могат да започват с цифра. Чувствителни са към големината на буквите.
- Обекти: Всичко в Python е обект. Всеки обект има тип, стойност и идентификатор (адрес в паметта).
- Препратки: Променливата съхранява препратка към идентификатора на обекта.
Пример:
# Създаваме обект int със стойност 100 и присвояваме неговия идентификатор на 'a'
a = 100
# Променливата 'b' сега се отнася към същия обект int със стойност 100
b = a
# Създаваме нов обект int със стойност 200 и присвояваме неговия идентификатор на 'a'
a = 200
В този пример, след a = 200, променливата a се отнася към новия обект 200, а променливата b все още се отнася към обекта 100.
- Динамично типизиране: Типът на променливата се определя от типа на обекта, към който се отнася, и може да се променя по време на изпълнение.
# Променливата 'x' се отнася към обект int
x = 10
# Сега променливата 'x' се отнася към обект str
x = "hello"
-
Събиране на боклука: Когато няма повече препратки към обект, Python автоматично освобождава паметта, заета от този обект, чрез механизма за събиране на боклука.
-
Немутируеми (immutable) срещу мутабилни (mutable) обекти:
- Немутируеми: Числа, низове, кортежи. При опит да "промените" такъв обект, всъщност се създава нов обект.
- Мутируеми: Списъци, речници, множества. Техните съдържания могат да се променят без създаване на нов обект.
# Немутируем обект str
s = "world"
# Създава се нов обект str "hello world", към който 's' се отнася
s = "hello " + s
# Мутируем обект list
l = [1, 2, 3]
# Съдържанието на съществуващия списък се променя
l.append(4)
По този начин, променливите в Python са гъвкави и мощни инструменти за работа с данни, базирани на концепцията за препратки към обекти.