Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tại sao Python 3 không cho khai báo tuple unpacking trong tham số hàm

Từ Python 3.0 (PEP 3113), cú pháp unpacking tuple trực tiếp trong danh sách tham số hàm bị loại bỏ.

Cũ (Python 2) — không còn hợp lệ

def fn(a, (b, c)):
    pass  # SyntaxError trong Python 3

Cách viết đúng (Python 3)

Nhận tuple làm tham số, unpack bên trong hàm:

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

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

Lý do: PEP 3113 loại bỏ tuple parameter unpacking để đơn giản hóa ngữ pháp và tránh nhầm lẫn.