Tại một thời điểm nào đó, bạn có thể đi qua các chức năng với rất nhiều đối số. Đôi khi nó có ý nghĩa để kết hợp một số đối số thành siêu đối số. Tôi thường làm điều này với các bài viết, nhưng bây giờ tôi đang tìm cách tốt hơn để làm điều đó.
Tôi muốn biến ...
def do_something(ax, ay, az, bu, bv, c):
# Do something
... vào ...
def do_something(a, b, c):
# Do something
... Nơi a
và b
chứa các phân nhóm của họ.
Một cách để làm điều này là làm:
A = namedtuple('A', 'x, y, z')
a = A(ax, ay, az)
B = namedtuple('B', 'u, v')
b = B(bu, bv)
Tuy nhiên, điều này có vẻ đơn giản hơn:
a = SimpleNamespace(x=ax, y=ay, z=az)
b = SimpleNamespace(u=bu, v=bv)
Hạn chế là gì? Thực tế đó a
và b
không được đánh máy tốt? Chúng không phải là vật A và B?
(Btw, đừng lo lắng về tên biến. Tôi thường không sử dụng làm tên biến ngắn.)