Bir listeyi tuple'a dönüştürmeye çalışıyorum.
Google'da aradığımda buna benzer birçok cevap buluyorum:
l = [4,5,6]
tuple(l)
Ancak bunu yaparsam bu hata mesajını alıyorum:
TypeError: 'tuple' nesnesi çağrılabilir değil
Bu sorunu nasıl çözebilirim?
İşe yarayacaktır. Değişken adı olarak tuple
, list
veya diğer özel adları kullanmayın. Muhtemelen sorununuza neden olan şey budur.
>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)
eumiro'nun yorumunu genişletirsek, normalde tuple(l)
bir listeyi l
bir tuple'a dönüştürecektir:
In [1]: l = [4,5,6]
In [2]: tuple
Out[2]: <type 'tuple'>
In [3]: tuple(l)
Out[3]: (4, 5, 6)
Ancak, tuple
ı tuple
türü yerine bir tuple olacak şekilde yeniden tanımladıysanız:
In [4]: tuple = tuple(l)
In [5]: tuple
Out[5]: (4, 5, 6)
sonra tuple'ın kendisi çağrılabilir olmadığından bir TypeError alırsınız:
In [6]: tuple(l)
TypeError: 'tuple' object is not callable
Yorumlayıcınızdan çıkıp yeniden başlatarak veya (@glglgl sayesinde) tuple
için orijinal tanımı kurtarabilirsiniz:
In [6]: del tuple
In [7]: tuple
Out[7]: <type 'tuple'>
Şöyle bir şey yapmış olabilirsiniz:
>>> tuple = 45, 34 # You used `tuple` as a variable here
>>> tuple
(45, 34)
>>> l = [4, 5, 6]
>>> tuple(l) # Will try to invoke the variable `tuple` rather than tuple type.
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
tuple(l)
TypeError: 'tuple' object is not callable
>>>
>>> del tuple # You can delete the object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)
Sorun şu. Daha önce bir tuple (45, 34)
tutmak için bir tuple
değişkeni kullandığınız için... Yani, şimdi tuple
artık tuple
türünde bir nesne
...
Artık bir tip
değildir ve dolayısıyla artık Çağrılabilir
değildir.
Değişken adı olarak asla herhangi bir yerleşik tip kullanmayın... Kullanabileceğiniz başka bir isim var. Bunun yerine değişkeniniz için rastgele bir isim kullanın...