Trung BìnhPython iconPython

Walrus operator `:=` (Assignment Expression) là gì? Khi nào hữu ích?

Walrus operator (PEP 572, Python 3.8+) cho phép assign và return giá trị trong cùng một expression — giảm lặp code.

python
# Trước 3.8 — gọi hàm 2 lần hoặc dùng temp variable
data = get_data()
if data:
    process(data)

# Với walrus — assign và kiểm tra cùng lúc
if data := get_data():
    process(data)

# Đặc biệt hữu ích trong while loop
while chunk := file.read(8192):
    process(chunk)

# List comprehension với filter + transform
results = [y for x in data if (y := transform(x)) > 0]
# Tránh gọi transform() 2 lần (1 cho filter, 1 cho value)

Pitfall: không lạm dụng — walrus trong nested expression phức tạp làm code khó đọc hơn.

Dùng khi thực sự tránh được duplicate computation.

Xem toàn bộ Python cùng filter theo level & chủ đề con.

Mở danh sách Python