Snažím sa previesť zoznam na tuple.
Keď si to vygooglim, nájdem veľa podobných odpovedí:
l = [4,5,6]
tuple(l)
Ale keď to urobím, dostanem túto chybovú správu:
TypeError: 'tuple' object is not callable
Ako môžem tento problém vyriešiť?
Rozšírením komentára eumiro's, normálne tuple(l)
prevedie zoznam l
na tuple:
In [1]: l = [4,5,6]
In [2]: tuple
Out[2]: <type 'tuple'>
In [3]: tuple(l)
Out[3]: (4, 5, 6)
Ak ste však nadefinovali tuple
ako tuple a nie ako typ
tuple
:
In [4]: tuple = tuple(l)
In [5]: tuple
Out[5]: (4, 5, 6)
potom dostanete TypeError, pretože samotný tuple nie je volateľný:
In [6]: tuple(l)
TypeError: 'tuple' object is not callable
Pôvodnú definíciu pre tuple
môžete obnoviť ukončením a opätovným spustením interpretu alebo (vďaka @glgl):
In [6]: del tuple
In [7]: tuple
Out[7]: <type 'tuple'>
Možno ste urobili niečo podobné:
>>> 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)
Tu'je problém... Keďže ste predtým použili premennú tuple
na uloženie premennej tuple (45, 34)
... Takže teraz tuple
je objekt
typu tuple
...
Už to nie je typ
, a teda už to nie je vyvolateľný
.
Nikdy nepoužívajte žiadne zabudované typy ako názov premennej... Máte predsa k dispozícii akékoľvek iné meno, ktoré môžete použiť. Namiesto toho použite pre svoju premennú ľubovoľný názov...