Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ทำไม Python 3 จึงไม่รองรับ Tuple Parameter Unpacking ในฟังก์ชัน

ตั้งแต่ Python 3.0 (PEP 3113) ไม่รองรับการ unpack tuple โดยตรงในพารามิเตอร์ฟังก์ชันอีกต่อไป

โค้ดที่ทำงานใน Python 2 แต่ล้มเหลวใน Python 3

# Python 2 เท่านั้น - SyntaxError ใน Python 3
def fn(a, (b, c)):
    pass

Python interpreter จะแสดง Syntax Error ที่วงเล็บเปิดของ tuple

วิธีแก้ใน Python 3: รับ Tuple แล้ว Unpack ภายในฟังก์ชัน

def hypot(p1, p2):
    x1, y1 = p1
    x2, y2 = p2
    import math
    hyp = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
    return hyp

x = (10, 10)
y = (20, 20)
print("hyp =", hypot(x, y))  # hyp = 14.142135623730951

เหตุผลของการเปลี่ยนแปลง

  • ลดความซับซ้อนของไวยากรณ์
  • เพิ่มความสอดคล้อง (parameters เสมอเป็นตัวแปรเดี่ยว)
  • ช่วยให้การ introspection และ decorators ทำงานง่ายขึ้น

แนวทางปฏิบัติที่ดี: ส่ง tuple/object เข้ามา แล้ว unpack ภายในฟังก์ชัน ให้ชัดเจนและอ่านง่ายกว่า