Python’da birden çok değişkene birden çok veya aynı değeri atama

Python’da değişkenlere değer atamak için = operatörü kullanılır.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Yukarıdaki örnekte olduğu gibi, bir kerede bir tane yerine birden çok değişkene aynı anda değer atayabilirsiniz; bu, yazmak için yalnızca bir basit kod satırı gerektirdiğinden kullanışlıdır.

Aşağıdaki iki durum açıklanmıştır.

  • Birden çok değişkene birden çok değer atama
  • Aynı değeri birden çok değişkene atama

Birden çok değişkene birden çok değer atama

Değişkenler ve değerler virgülle ayrılarak birden çok değişkene aynı anda birden çok değer atanabilir.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Her biri farklı türde olan üç veya daha fazla değişken kabul edilebilir.

a, b, c = 0.1, 100, 'string'

print(a)
# 0.1

print(b)
# 100

print(c)
# string

Sol tarafta bir değişken varsa, bir demet olarak atanır.

a = 100, 200

print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>

Sol taraftaki değişkenlerin sayısı sağ taraftaki değerlerin sayısıyla eşleşmiyorsa, bir ValueError hatası ortaya çıkar, ancak geri kalanı değişkene bir yıldız işareti eklenerek bir liste olarak atanabilir.

# 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'>

Yıldız işaretleri ve bir demet veya listenin öğelerinin birden çok değişkene nasıl atanacağı hakkında daha fazla bilgi için aşağıdaki makaleye bakın.

Aynı değeri birden çok değişkene atama

Aynı değer, art arda = kullanılarak birden çok değişkene atanabilir. Bu, birden çok değişkeni aynı değere başlatmak için kullanışlıdır.

a = b = 100

print(a)
# 100

print(b)
# 100

3’ten fazla parça kabul edilebilir.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Aynı değer atandıktan sonra bunlardan birine başka bir değer atanabilir.

a = 200

print(a)
# 200

print(b)
# 100

Tamsayılar, kayan nokta sayıları ve dizeler gibi değişmez (değiştirilemez) nesneler yerine listeler ve sözlük türleri gibi değişken nesneler atarken dikkatli olun.

Ardışık olarak = kullanılması, tüm değişkenlerin aynı nesneye işaret ettiği anlamına gelir; bu nedenle, bir öğenin değerini değiştirirseniz veya yeni bir öğe eklerseniz, diğeri de değişecektir.

a = b = [0, 1, 2]

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Aşağıdaki ile aynı.

b = [0, 1, 2]
a = b

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Bunları ayrı ayrı işlemek istiyorsanız, her birine atamanız yeterlidir.

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]

Kopyalama modülünde copy() ve deepcopy() ile sığ ve derin kopyalar oluşturma yöntemleri de vardır.

Copied title and URL