Python’da değişmez (değiştirilemez) dizi nesneleri olan demetler.
Tek elemanlı demetler veya boş demetler oluşturulurken dikkatli olunmalıdır.
Aşağıdaki ayrıntılar burada açıklanmıştır.
- 1 elemanlı demet
- Tuple yuvarlak parantezleri atlanabilir.
- boş demet
- İşlev bağımsız değişkenlerindeki demetler
1 elemanlı demet
Bir elemanlı bir demet oluşturmaya çalışırsanız ve yuvarlak parantezler () içine yalnızca bir nesne yazarsanız, yuvarlak parantezler () yok sayılır ve işlenir ve bir demet olarak kabul edilmez.
single_tuple_error = (0)
print(single_tuple_error)
print(type(single_tuple_error))
# 0
# <class 'int'>
Tek elemanlı bir demet oluşturmak için sondaki virgül gerekir.
single_tuple = (0, )
print(single_tuple)
print(type(single_tuple))
# (0,)
# <class 'tuple'>
Örneğin, birden fazla demeti birleştirmek için + operatörünü kullanırken, bir eleman eklemeye çalışırsanız ve bir virgül unutursanız, bir hata alacağınızı unutmayın.
# print((0, 1, 2) + (3))
# TypeError: can only concatenate tuple (not "int") to tuple
print((0, 1, 2) + (3, ))
# (0, 1, 2, 3)
Tuple yuvarlak parantezleri atlanabilir.
Tek elemanlı bir demetin virgül gerektirmesinin nedeni, bir demetin yuvarlak parantez () içine alınmış bir değer değil, virgülle ayrılmış bir değer olmasıdır.
Tuple’ı oluşturan virgüldür, yuvarlak parantezler değil.
Tuples — Built-in Types — Python 3.10.4 Documentation
Yuvarlak parantezler () atlanmış olsa bile, bir demet olarak işlenir.
t = 0, 1, 2
print(t)
print(type(t))
# (0, 1, 2)
# <class 'tuple'>
Bir nesneden sonraki gereksiz virgülün bir tanımlama grubu olarak kabul edildiğini unutmayın.
t_ = 0,
print(t_)
print(type(t_))
# (0,)
# <class 'tuple'>
boş demet
Yukarıda bahsedildiği gibi, bir demet temsil edilirken yuvarlak parantezler () atlanabilir, ancak boş bir demet oluşturulurken gereklidir.
Bir boşluk veya virgül tek başına bir SyntaxError ile sonuçlanır.
empty_tuple = ()
print(empty_tuple)
print(type(empty_tuple))
# ()
# <class 'tuple'>
# empty_tuple_error =
# SyntaxError: invalid syntax
# empty_tuple_error = ,
# SyntaxError: invalid syntax
# empty_tuple_error = (,)
# SyntaxError: invalid syntax
Boş tuple’lar ayrıca tuple() tarafından argüman olmadan da oluşturulabilir.
empty_tuple = tuple()
print(empty_tuple)
print(type(empty_tuple))
# ()
# <class 'tuple'>
İşlev bağımsız değişkenlerindeki demetler
Sözdizimsel bir belirsizlik olduğunda bile demet yuvarlak parantezleri () gereklidir.
İşlev argümanları virgülle ayrılır, ancak bu durumda, işlevin bir tanımlama grubu olup olmadığını, yuvarlak parantezlerin () varlığı veya yokluğu ile açıkça belirtmek gerekir.
Parantez () olmadan, her değer her bağımsız değişkene iletilir; parantez () ile, her değer bir bağımsız değişkene tanımlama grubu olarak iletilir.
def example(a, b):
print(a, type(a))
print(b, type(b))
example(0, 1)
# 0 <class 'int'>
# 1 <class 'int'>
# example((0, 1))
# TypeError: example() missing 1 required positional argument: 'b'
example((0, 1), 2)
# (0, 1) <class 'tuple'>
# 2 <class 'int'>
Tuple bir yıldız * ile işaretlenmişse, tuple’ın elemanları genişletilebilir ve argüman olarak iletilebilir.
example(*(0, 1))
# 0 <class 'int'>
# 1 <class 'int'>
Daha fazla bilgi için aşağıdaki makaleye bakın.