Une fonction très peu connue de Python est la possibilité de définir un paramètre en indiquant qu’il s’agit d’une séquence. Python va automatiquement appliquer l’unpacking dessus :
>>> def message_geolocalise((long, lat), message): print '%s' % message print 'Longitude : %s' % long print 'Latitude : %s' % lat ... >>> point = (4.344, 2.44) >>> message = "glittering prizes" >>> message_geolocalise(point, message) glittering prizes Longitude : 4.344 Latitude : 2.44 |
Cette fonctionnalité a été retirée en Python 3, jugée rarement utilisée, et surtout facilement remplaçable par un unpacking explicite :
>>> def message_geolocalise(coord, message): long, lat = coord print '%s' % message print 'Longitude : %s' % long print 'Latitude : %s' % lat |
En effet, en Python on peut utiliser de l’unpacking imbriqué :
a, (b, c) = [1, [2, 3]] |
Et cela a été abusé en le mélangeant la syntaxe des paramètres imbriqués, qui rend le truc franchement illisible.
Voilà, c’était le post “vous aviez un poney que vous ne saviez pas et maintenant que vous le savez vous l’avez plus”.
Ouais bof. Je connaissais la possibilité mais franchement, j’ai rarement vu l’utilité d’écrire
def calcul((lon, lat))
par rapport àdef calcul(lon, lat)
. Bref je comprends que ça ait été supprimé…+1 je ne vois pas réellement l intérêt de la fonctionnalitée deprecièe
@Fred La différence est pas entre
def calcul((lon, lat))
etdef calcul(lon, lat)
mais entredef calcul((lon, lat))
et :Et dans ce dernier cas, tu dois te taper la doc (si y’en a une) pour savoir si c’est la latitude ou la longitude d’abord.
Ce n’est bien sûr pas insurmontable, c’était juste pratique de temps en temps, c’est tout.
Un autre truc chiant c’est pour les lambdas, comme on a le droit qu’à une expression on ne peut plus faire de l’unpacking et on est obligé d’utiliser les indices.
Perso, j’avais utilisé cette fonctionnalité une fois dans un de mes codes, ça collait bien pour l’occasion.
Moi je trouvais ça pratique :(
Ne serait-ce qu’avoir la fonctionnalité avec une autre syntaxe ptet ? :/
Une ligne de plus, c’est pas la fin du monde. Readability matters ^^