W pewnym momencie możesz natrafić na funkcje z wieloma argumentami. Czasami sensowne jest łączenie niektórych argumentów w superargumenty. Często robiłem to z dyktando, ale teraz szukam lepszych sposobów na zrobienie tego.
Chciałbym włączyć ...
def do_something(ax, ay, az, bu, bv, c):
# Do something
... w ...
def do_something(a, b, c):
# Do something
... gdzie a
i b
zawierają ich podwariacje.
Jednym ze sposobów na to jest:
A = namedtuple('A', 'x, y, z')
a = A(ax, ay, az)
B = namedtuple('B', 'u, v')
b = B(bu, bv)
Wydaje się to jednak prostsze:
a = SimpleNamespace(x=ax, y=ay, z=az)
b = SimpleNamespace(u=bu, v=bv)
Jaka jest wada? Fakt, że a
i b
nie są dobrze napisane? To nie są obiekty A i B?
(Przy okazji, nie przejmuj się nazwami zmiennych. Zwykle nie używam jako krótkich nazw zmiennych).