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

Scope biến trong Python Module hoạt động như thế nào?

Namespace (không gian tên) là cách Python triển khai scope (phạm vi). Trong Python, mỗi package, module, class, function và method đều sở hữu một "namespace" riêng để phân giải tên biến. Khi một function, module hoặc package được thực thi (bắt đầu chạy), một namespace được tạo ra. Hãy tưởng tượng nó như một "bối cảnh đánh giá" (evaluation context). Khi function, v.v. kết thúc thực thi, namespace bị hủy bỏ và các biến cũng biến mất. Ngoài ra còn có một global namespace được sử dụng nếu tên không tìm thấy trong local namespace.

Biến thường chỉ được tạo trong local namespace. Các câu lệnh global và nonlocal có thể tạo biến trong namespace khác ngoài local namespace.

Scope resolution (phân giải phạm vi) cần thiết khi một biến được dùng để xác định giá trị của nó nên lấy từ đâu. Scope resolution trong Python tuân theo quy tắc LEGB.

  • L, Local – Tên được gán theo bất kỳ cách nào trong function (hoặc lambda), và không được khai báo global trong function đó.
  • E, Enclosing-function locals – Tên trong local scope của bất kỳ và tất cả các function bao quanh tĩnh (hoặc lambda), từ trong ra ngoài.
  • G, Global (module) – Tên được gán ở top-level của file module, hoặc bằng cách thực thi câu lệnh global trong def trong file đó.
  • B, Built-in (Python) – Tên được gán sẵn trong module built-in names: open, range, SyntaxError, v.v.