Em um ponto ou outro, você pode encontrar funções com muitos argumentos. Às vezes, faz sentido combinar alguns argumentos em super argumentos. Eu sempre fiz isso com ditados, mas agora estou procurando maneiras melhores de fazê-lo.
Eu gostaria de virar ...
def do_something(ax, ay, az, bu, bv, c):
# Do something
... para dentro ...
def do_something(a, b, c):
# Do something
... onde a
e b
conter suas subvariações.
Uma maneira de fazer isso é:
A = namedtuple('A', 'x, y, z')
a = A(ax, ay, az)
B = namedtuple('B', 'u, v')
b = B(bu, bv)
No entanto, isso parece mais simples:
a = SimpleNamespace(x=ax, y=ay, z=az)
b = SimpleNamespace(u=bu, v=bv)
Qual é a desvantagem? O fato de que a
e b
não são bem digitados? Eles não são objetos A e B?
(Aliás, não se preocupe com os nomes das variáveis. Normalmente não uso como nomes curtos de variáveis.)