V Pythonu se operator = uporablja za dodeljevanje vrednosti spremenljivkam.
a = 100
b = 200
print(a)
# 100
print(b)
# 200
Kot v zgornjem primeru lahko vrednosti priredite več spremenljivkam hkrati in ne eni naenkrat, kar je priročno, saj je za to potrebna le ena preprosta vrstica kode.
Opisana sta naslednja dva primera.
- Pripisovanje več vrednosti več spremenljivkam
- Enaka vrednost je dodeljena več spremenljivkam
Pripisovanje več vrednosti več spremenljivkam
Več vrednosti lahko hkrati pripišete več spremenljivkam tako, da spremenljivke in vrednosti ločite z vejicami.
a, b = 100, 200
print(a)
# 100
print(b)
# 200
Sprejemljive so tri ali več spremenljivk, vsaka druge vrste.
a, b, c = 0.1, 100, 'string'
print(a)
# 0.1
print(b)
# 100
print(c)
# string
Če je na levi strani ena spremenljivka, je dodeljena kot tuple.
a = 100, 200
print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>
Če se število spremenljivk na levi strani ne ujema s številom vrednosti na desni strani, se pojavi napaka ValueError, preostale pa lahko pripišete kot seznam tako, da spremenljivki dodate zvezdico.
# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)
# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)
a, *b = 100, 200, 300
print(a)
print(type(a))
# 100
# <class 'int'>
print(b)
print(type(b))
# [200, 300]
# <class 'list'>
*a, b = 100, 200, 300
print(a)
print(type(a))
# [100, 200]
# <class 'list'>
print(b)
print(type(b))
# 300
# <class 'int'>
Za več informacij o zvezdicah in načinu dodeljevanja elementov tuple ali seznama več spremenljivkam glejte naslednji članek.
Enaka vrednost je dodeljena več spremenljivkam
Isto vrednost lahko pripišete več spremenljivkam z zaporedno uporabo =. To je uporabno za inicializacijo več spremenljivk na isto vrednost.
a = b = 100
print(a)
# 100
print(b)
# 100
Več kot 3 kosi so sprejemljivi.
a = b = c = 'string'
print(a)
# string
print(b)
# string
print(c)
# string
Po dodelitvi iste vrednosti lahko eni od njih dodelite drugo vrednost.
a = 200
print(a)
# 200
print(b)
# 100
Pri dodeljevanju spremenljivih predmetov, kot so seznami in tipi slovarjev, bodite previdni in ne nespremenljivih (nespremenljivih) predmetov, kot so cela števila, števila s plavajočo vejico in nizi.
Zaporedna uporaba = pomeni, da vse spremenljivke kažejo na isti objekt, zato se ob spremembi vrednosti enega elementa ali dodajanju novega elementa spremenijo tudi drugi.
a = b = [0, 1, 2]
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Enako kot spodaj.
b = [0, 1, 2]
a = b
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Če jih želite obdelati ločeno, jih preprosto pripišite vsakemu posebej.
after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation
a = [0, 1, 2]
b = [0, 1, 2]
print(a is b)
# False
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [0, 1, 2]
V modulu copy sta na voljo tudi metodi za ustvarjanje plitvih in globokih kopij s funkcijama copy() in deepcopy().