Kiến thức công nghệ
February 14, 2022

Ứng dụng của Decorator trong Python

Decorator trong Python khá dễ hiểu và quen thuộc với những lập trình viên Python. Tuy nhiên việc viết Decorator cũng yêu cầu tổng hợp rất nhiều các kỹ năng khác nhau. Để viết Decorator trong Python, trước hết các lập trình viên cần hiểu một số khái niệm sau đây:

  1. closures
  2. Cách sử dụng hàm như một tham số (function as first-class arguments).
  3. Cách mã nguồn python được thực thi như thế nào.

Các khái niệm này cũng khá dễ để tìm tài liệu trên mạng, tuy nhiên khái niệm đầu tiên có thể khó hiểu với mọi người nên mình sẽ giải thích khái niệm này. Trong Python, “closures” là các hàm được viết trong thân hàm khác (functions within function), hàm này có thể truy cập các biến ở hàm bên ngoài nó (outer function). Ở đây mình xin phép chỉ đi sâu vào các ứng dụng Python Decorator trong việc phân tích, lưu vết và tính toán hiệu năng.

Với những ứng dụng phức tạp, chúng ta thường xuyên phải lưu các thông số của hệ thống để phục vụ các mục đích khác nhau trong phân tích, tính toán hiệu năng, và ta có thể dùng Decorator để thuận tiện trong các tác vụ này. Chẳng hạn đoạn mã nguồn dưới đây sẽ cho ta thông tin khi nào hàm được gọi, thời gian thực thi của hàm:

Kết quả khi chạy đoạn mã nguồn trên như sau:

Đồng bộ hoá

Có thể sử dụng Decorator cho mục đích đồng bộ hoá trong khi chạy đa luồng.

ta sử dụng 100 luồng để tăng giá trị của counter, vì vậy giá trị counter sau khi chạy mã nguồn sẽ là 100. Việc sử dụng decorators ở đây để cho việc hàm increment sẽ được đồng bộ trong các luồng.

Xác thực trong các framework

Decorator có thể sử dụng để viết các hàm xác thực việc đăng nhập vào hệ thống, thường được sử dụng trong các web framework như flask, Django. Một Decorator đơn giản có thể sử dụng như sau:

Decorators Authenticate có chức năng chuyển hướng về trang đăng nhập nếu thông tin người dùng nhập vào xác thực không đúng. Trong trường hợp thông tin đăng nhập chính xác, hàm index sẽ được khởi chạy để đưa người dùng tới trang tiếp theo (index.mako).

Trên đây là một số ứng dụng của Decorator trong Python. Việc sử dụng có thể không hề dễ dàng khi mới tiếp cận với bất cứ lập trình viên nào. Nhưng hiệu quả của nó mang lại lại cực kỳ lớn. Mong rằng qua bài viết này, các bạn sẽ cảm thấy hứng thú với những gì mà Decorators có thể làm được.

Thân Cao Cường


Tham khảo

5 reasons you need to learn to write Python decorators – O’Reilly (oreilly.com)

Closures in Python with Examples - TechVidvan

Python Decorators: What is a Decorator? - DataCamp

Các bài viết liên quan

Ảnh Blog Chia Sẻ

5 lầm tưởng phổ biến về AI

Trong bối cảnh bùng nổ công nghệ như hiện nay thì những thuật ngữ như AI (Artificial Intelligence) hay ChatGPT đang dần dần xuất hiện nhiều trong cuộc sống của chúng ta. Qua quá trình phỏng vấn, chia sẻ và làm việc với nhiều bạn trẻ, nhất là những bạn sinh viên đang trong giai đoạn xác định ngành học và định hướng nghề nghiệp, mình nhận thấy các bạn có nhiều thắc mắc và câu hỏi thú vị về AI. Trong bài viết này, hãy cùng nhau phân tích và thảo luận một số luận điểm hay được mọi người quan tâm.
Tìm hiểu
Ảnh Blog Chia Sẻ

Giới thiệu về Docker

Trong năm 2020, Docker được bình chọn là một trong những nền tảng nổi tiếng nhất trong giới công nghệ, chỉ đứng sau Linux và Windows, và được nhiều nhà phát triển chọn là nền tảng “muốn được học nhất”*.
Tìm hiểu