Sobes.tech
Middle
160

Как са устроени променливите в 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 са гъвкави и мощни инструменти за работа с данни, базирани на концепцията за препратки към обекти.