Listelerin ve dizgelerin indisleme ve dilimleme gibi pek çok ortak
özellikleri olduğunu grdük. Bunlar sıra şeklindeki iki veri türüdürler.
Python gelişmekte olan bir dil; diğer sıra şeklindeki veri türleri de
Python'a eklenebilir. Demet de başka bir sıra şekilli standart veri türüdür.
Bir demet virgül ile ayrılmış bir kaç değerden oluşur.
>>> t = 12345, 54321, 'merhaba!'
>>> t[0]
12345
>>> t
(12345, 54321, 'merhaba!')
>>> # demetler iç içe kullanılabilirler :
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'merhaba!'), (1, 2, 3, 4, 5))
Gördüğünüz gibi çıktıda demetler daima parantez içinde görünürler; ki
iç içe geçmiş demetler belli olsun. Demetler parantezli veya parantezsiz
olarak yazılabilirler; ancak parantezler genelikle gereklidirler
(özellikle de demet daha büyük bir ifadenin içinde geçiyorsa).
Demetlerin pekçok kullanım alanı var: (x, y) koordinat
çifti, veri tabanındaki işçi kayıtları vb. gibi. Demetler de dizgeler
gibi değerleri değiştirilemez veri türleridir; bunların elemanlarına
atama yapılamaz (fakat dilimleme ve birleştirme aracılığı ile bu etki
sağlanabilir). Ayrıca değiştirilebilen elemanlardan oluşan demetler
oluşturmak da mümkündür (örnek: listelerden oluşan bir demet).
Sıfır veya bir elemanlı demetlerin oluşturulması ile ilgili özel bir
problem var: bunların ifade edilmesini sağlayan sözdizim biraz acayip.
Boş demetler bir çift boş parantez ile ifade edilir. Tek elemanı olan
bir demet için ise elemandan sonra bir virgül kullanılır (tek bir
değeri parantez içine almak yeterli değildir). Çirkin ama etkili.
Örnek:
>>> bos = ()
>>> tekOge = 'merhaba', # <--satır sonundaki virgüle dikkat
>>> len(bos)
0
>>> len(tekOge)
1
>>> tekOge
('merhaba',)
t = 12345, 54321, 'merhaba!' ifadesi demetleme
(tuple packing) işlemine bir örnektir: 12345, 54321 ve
'merhaba!' değerleri bir demet içinde toplanmışlardır.
Bu işlemin tersi de mümkün:
Doğal olarak, buna demet açma (sequence unpacking) deniyor. Demet açma
sol taraftaki değişken sayısının sıra içindeki öğe sayısına eşit
olmasını gerektirir. Çoklu değer atama işleminin aslında demetleme ve
demet açmanın bir bileşimi olduğuna dikkat edin.
Burada küçük bir asimetri var: birden fazla değeri demetleme her zaman
bir demet oluşturur ve demet açma herhangi bir sıra için yapılabilir.
Örnek:
>>> paket = 'xyz' # bir dizge
>>> a,b,c = paket
>>> a
'x'
>>> b
'y'
>>> c
'z'