Pada satu titik atau lain Anda mungkin menemukan fungsi dengan banyak argumen. Terkadang masuk akal untuk menggabungkan beberapa argumen menjadi super-argumen. Saya sering melakukan ini dengan dikte, tetapi sekarang saya mencari cara yang lebih baik untuk melakukannya.
Saya ingin berbelok ...
def do_something(ax, ay, az, bu, bv, c):
# Do something
... menjadi ...
def do_something(a, b, c):
# Do something
... di mana a
dan b
berisi subvariasinya.
Salah satu cara untuk melakukan ini adalah dengan melakukan:
A = namedtuple('A', 'x, y, z')
a = A(ax, ay, az)
B = namedtuple('B', 'u, v')
b = B(bu, bv)
Namun, ini tampaknya lebih sederhana:
a = SimpleNamespace(x=ax, y=ay, z=az)
b = SimpleNamespace(u=bu, v=bv)
Apa kekurangannya? Fakta bahwa a
dan b
tidak diketik dengan baik? Mereka bukan objek A dan B?
(Btw, jangan khawatir tentang nama variabel. Saya biasanya tidak menggunakan nama variabel pendek.)