Sadece çevirmenle uğraşıyordum ve anlamadığım bir şeye rastladım. Bir listeyi listeden biri olarak bir tuple oluşturduğumda ve o listeyi güncellemeye çalıştığımda tuhaf bir şey olur. Örneğin, ben çalıştırdığınızda bu:Bir tuple içindeki bir listeyi güncelleme
tup = (1,2,3,[4,5])
tup[3] += [6]
alıyorum:
beklediğim tam olarak neTypeError: 'tuple' object does not support item assignment
. Yine başlığın başvuru Ancak o zaman, ben alıyorum: Yani liste aslında piton bir istisna attı rağmen güncellendi
>>> tup
(1, 2, 3, [4, 5, 6])
. Bu nasıl çalışıyor? Aslında böyle bir şey yapmak istediğim bir senaryo düşünemiyorum, ama hala neler olduğunu anlamak istiyorum. Teşekkür ederim.
Bence bu cevap, eklentinin sadece "tup [3] .__ iadd __ ([6])' değil; tup [3] = tup [3] .__ iadd __ ([6]) 'dır. Sadece 'list .__ iadd__', mutasyona uğradığı aynı nesneyi döndürür. – zondo
Dokümanlara bağlantı için teşekkürler! Bu büyük bir yardım. –
Teşekkürler, bunu dokümanlarda yakalamadım. Yani bu hakkı anladığımdan emin olmak için, temelde benim örneğimde liste güncellendi çünkü ben sadece tup [3] .__ iadd __ ([6]) yapıyorum ve THEN python, tuple'daki ödev atamasını deniyor (ve başarısız oluyor). Bu yüzden başarısız olduğunu söyleyen istisnayı alıyorum, ancak bu noktada listeyi daha önce güncelledik mi? –