À un moment ou à un autre, vous pourriez rencontrer des fonctions avec beaucoup d'arguments. Parfois, il est logique de combiner certains des arguments en super-arguments. J'ai souvent fait cela avec des dict, mais maintenant je cherche de meilleures façons de le faire.
J'aimerais tourner ...
def do_something(ax, ay, az, bu, bv, c):
# Do something
... dans ...
def do_something(a, b, c):
# Do something
... où a
et b
contiennent leurs sous-variations.
Une façon de procéder consiste à:
A = namedtuple('A', 'x, y, z')
a = A(ax, ay, az)
B = namedtuple('B', 'u, v')
b = B(bu, bv)
Cependant, cela semble plus simple:
a = SimpleNamespace(x=ax, y=ay, z=az)
b = SimpleNamespace(u=bu, v=bv)
Quel est l'inconvénient? Le fait que a
et b
ne sont pas bien tapés? Ce ne sont pas des objets A et B?
(Btw, ne vous inquiétez pas pour les noms de variables. Je ne les utilise pas normalement comme noms de variables courts.)