Потому как законы природы нарушить сложно, даже в питонеКод действительно разный, но дело вовсе не в туплах как таковых, что вы к ним привязались.
(*) Это конечно хорошо. Просто замечательно. Но опять в теории. А на практикеНакладные расходы на вызов функций намного больше, не говоря уже о том что туплы там создаются в C коде.
In [11]: def void(): pass In [12]: %timeit void() 10000000 loops, best of 3: 121 ns per loop In [13]: %timeit (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 10000000 loops, best of 3: 27.6 ns per loop^ создание тупла из 10-ти элементов и его удаление намного быстрее простого вызова функции.
http://ideone.com/uBa2W
[0] создание константы это одно
[1] создание тупла из констант это другое
[2] создание тупла из переменных значений, что проиходит на самомо деле, в отличие от (*) совершенно уже третье
[3] а в реальной жизни кроме создания и уничтожения тупла нужна его декомпозиция. и уже 6-ти кратное проседание от (*)
[4] а не ровен час декомпозиция ведется через `enumerate` (что тоже вызов функции)
вот и набежало обещанное ранее нивелирование выйгрыша.
но и это не все было еще. тупельная версия использует использует примерно в 2 раза больше декомпозиций через `enumerate`, чем рекурсивная своих рекурсивных вызовов функций.
итого вместо 10-ти кратного ускорения от использования туплов в теории, в реальности имеем 40...400% проседание производительности