Vous dites
Il semble que python fait automatiquement la conversion du type de liste tuple
C'est douteux. Puisque les listes et les tuples sont tous les deux sequence types, ils implémentent tous les mêmes comportements, et quelle que soit la bibliothèque GUI que vous utilisez, vous n'avez besoin d'aucun des comportements list-only.
Il est probablement bien de le faire dans de nombreux cas, mais notez que les listes ne prennent un peu plus d'espace que tuples:
>>> sys.getsizeof((1, 2))
72
>>> sys.getsizeof([1, 2])
88
Et peut-être plus lent que tuples certaines choses:
>>> lst, tup = [1, 2], (1, 2)
>>> def unpack(x):
... a, b = x
...
>>> %timeit unpack(tup)
10000000 loops, best of 3: 163 ns per loop
>>> %timeit unpack(lst)
10000000 loops, best of 3: 172 ns per loop
ce sont très petites différences qui ne sera pas question jusqu'à des échelles beaucoup plus - comme dans milliards des appels - s o le compromis pourrait en valoir la peine.
Pourtant, je ne vois pas les gens le font très souvent. Cela semble être une bonne astuce de lisibilité, mais cela pourrait avoir des conséquences inattendues dans certaines circonstances. Par exemple, si vous transmettez une liste que vous avez l'intention d'utiliser plus tard, vous devez faire attention à ne pas la modifier dans la fonction. Enfin, comme le souligne à juste titre J.F. Sebastian, les tuples et les listes tendent à signifient des choses légèrement différentes; les utiliser de manière non conventionnelle pourrait nuire à la lisibilité que vous recherchez.
J'aime bien la façon dont vous l'avez écrit aussi, semble plus bien défini. – jamylak
Python ne "fait pas de conversion de type de liste à tuple". C'est [tapant le dard] (http://en.wikipedia.org/wiki/Duck_typing) en action: probablement 'window.set_pos' nécessite une séquence de deux éléments, mais pas nécessairement un 2-' tuple' (je dis sans doute puisque je ne sais pas où 'window.set_pos' vient ou ce qu'il fait). – Chris
Réécrire la fonction pour prendre deux arguments au lieu d'un 2-tuple. –