เมื่อถึงจุดหนึ่งคุณอาจพบกับฟังก์ชั่นที่มีข้อโต้แย้งมากมาย บางครั้งมันก็สมเหตุสมผลที่จะรวมการขัดแย้งบางอย่างเข้ากับการโต้แย้งสุดยอด ฉันทำสิ่งนี้บ่อยครั้งด้วย dicts แต่ตอนนี้ฉันกำลังมองหาวิธีที่ดีกว่าในการทำมัน
ฉันอยากจะกลับ ...
def do_something(ax, ay, az, bu, bv, c):
# Do something
... เข้าสู่ ...
def do_something(a, b, c):
# Do something
... ที่ไหนa
และb
มีตัวแปรย่อย
วิธีหนึ่งในการทำเช่นนี้คือ:
A = namedtuple('A', 'x, y, z')
a = A(ax, ay, az)
B = namedtuple('B', 'u, v')
b = B(bu, bv)
อย่างไรก็ตามดูเหมือนง่ายกว่า:
a = SimpleNamespace(x=ax, y=ay, z=az)
b = SimpleNamespace(u=bu, v=bv)
ข้อเสียเปรียบคืออะไร? ความจริงที่a
และb
พิมพ์ไม่ดี? พวกเขาไม่ใช่วัตถุ A และ B?
(Btw ไม่ต้องกังวลเกี่ยวกับชื่อตัวแปรปกติแล้วฉันไม่ได้ใช้เป็นชื่อตัวแปรแบบสั้น)