Hướng dẫn uses of decorators in python - sử dụng decorator trong python
Trang trí trong PythonPython có một tính năng thú vị gọi là các nhà trang trí để thêm chức năng vào một mã hiện có.decorators to add functionality to an existing code. Show
Điều này cũng được gọi là metaprogramming vì một phần của chương trình cố gắng sửa đổi một phần khác của chương trình tại thời điểm biên dịch.metaprogramming because a part of the program tries to modify another part of the program at compile time. Điều kiện tiên quyết cho các nhà trang trí học tậpĐể hiểu về các nhà trang trí, trước tiên chúng ta phải biết một vài điều cơ bản trong Python. Chúng ta phải thoải mái với thực tế là mọi thứ trong Python (vâng! Ngay cả các lớp học), là đối tượng. Tên mà chúng tôi xác định chỉ đơn giản là các định danh bị ràng buộc với các đối tượng này. Các hàm không phải là ngoại lệ, chúng cũng là đối tượng (với các thuộc tính). Các tên khác nhau có thể được liên kết với cùng một đối tượng chức năng. Đây là một ví dụ.
Đầu ra Hello Hello Khi bạn chạy mã, cả hai chức năng 3 và 4 cung cấp cùng một đầu ra. Ở đây, các tên 3 và 4 đề cập đến cùng một đối tượng hàm.Bây giờ mọi thứ bắt đầu trở nên kỳ quặc hơn. Các chức năng có thể được truyền dưới dạng đối số cho một chức năng khác. Nếu bạn đã sử dụng các hàm như 7, 8 và 9 trong Python, thì bạn đã biết về điều này.Các chức năng như vậy lấy các chức năng khác làm đối số còn được gọi là các hàm bậc cao hơn. Dưới đây là một ví dụ về một chức năng như vậy.higher order functions. Here is an example of such a function.
Chúng tôi gọi các chức năng như sau.
Hơn nữa, một hàm có thể trả về một chức năng khác.
Đầu ra Hello
Hello Hello Khi bạn chạy mã, cả hai chức năng 3 và 4 cung cấp cùng một đầu ra. Ở đây, các tên 3 và 4 đề cập đến cùng một đối tượng hàm.Bây giờ mọi thứ bắt đầu trở nên kỳ quặc hơn.Các chức năng có thể được truyền dưới dạng đối số cho một chức năng khác.callable as they can be called. Nếu bạn đã sử dụng các hàm như 7, 8 và 9 trong Python, thì bạn đã biết về điều này.Các chức năng như vậy lấy các chức năng khác làm đối số còn được gọi là các hàm bậc cao hơn. Dưới đây là một ví dụ về một chức năng như vậy.
Chúng tôi gọi các chức năng như sau.
Hơn nữa, một hàm có thể trả về một chức năng khác.
Ở đây, 0 là một hàm lồng nhau được xác định và trả về mỗi lần chúng tôi gọi 1.Cuối cùng, chúng ta phải biết về việc đóng cửa trong Python. Trở lại với các nhà trang trí
Các chức năng và phương thức được gọi là có thể gọi vì chúng có thể được gọi. Trong thực tế, bất kỳ đối tượng nào thực hiện phương thức 2 đặc biệt đều được gọi là có thể gọi được. Vì vậy, theo nghĩa cơ bản nhất, một người trang trí là một người có thể gọi được trả về một người có thể gọi được.Hello Hello0 Về cơ bản, một người trang trí có chức năng, thêm một số chức năng và trả lại nó. Hello Hello1 Khi bạn chạy các mã sau trong shell, Trong ví dụ được hiển thị ở trên, >>> operate(inc,3) 4 >>> operate(dec,3) 23 là một người trang trí. Trong bước chuyển nhượng:Hàm 4 được trang trí và hàm trả về được đặt tên 5.Hello Hello2 Chúng ta có thể thấy rằng chức năng trang trí đã thêm một số chức năng mới vào chức năng ban đầu. Điều này tương tự như đóng gói một món quà. Các nhà trang trí hoạt động như một trình bao bọc. Bản chất của đối tượng được trang trí (món quà thực tế bên trong) không thay đổi. Nhưng bây giờ, nó trông rất đẹp (vì nó đã được trang trí). Hello Hello3 Nói chung, chúng tôi trang trí một chức năng và gán lại nó là, Hello Hello4 Đây là một cấu trúc phổ biến và vì lý do này, Python có một cú pháp để đơn giản hóa điều này. Hello Hello5 Chúng ta có thể sử dụng biểu tượng 6 cùng với tên của hàm trang trí và đặt nó lên trên định nghĩa của hàm được trang trí. Ví dụ,tương đương với Đây chỉ là một đường cú pháp để thực hiện trang trí. Hello Hello6 Chức năng trang trí với các thông sốCác nhà trang trí trên rất đơn giản và nó chỉ hoạt động với các chức năng không có bất kỳ thông số nào. Điều gì sẽ xảy ra nếu chúng ta có các chức năng có trong các tham số như: Hàm này có hai tham số, a và b. Chúng tôi biết nó sẽ gây ra lỗi nếu chúng tôi vượt qua B là 0. Hello Hello7 Đầu ra Hello Hello8
Hello Hello Hello Hello9 Về cơ bản, một người trang trí có chức năng, thêm một số chức năng và trả lại nó. 0Khi bạn chạy các mã sau trong shell, 1Trong ví dụ được hiển thị ở trên, 3 là một người trang trí. Trong bước chuyển nhượng: 2
Ưu điểm của các nhà trang trí trong Python là gì?Một người trang trí trong Python là một chức năng lấy một chức năng khác làm đối số của nó và trả về một chức năng khác.Các nhà trang trí có thể cực kỳ hữu ích vì chúng cho phép mở rộng chức năng hiện có, mà không có bất kỳ sửa đổi nào đối với mã nguồn chức năng ban đầu.allow the extension of an existing function, without any modification to the original function source code.
Chức năng trang trí là gì?Theo định nghĩa, một bộ trang trí là một hàm có một chức năng khác và mở rộng hành vi của hàm sau mà không sửa đổi rõ ràng nó.a function that takes another function and extends the behavior of the latter function without explicitly modifying it.
Các nhà trang trí có hữu ích không?Chúng không chỉ có thể được sử dụng để làm chậm thời gian cần thiết để viết một số mã, mà chúng còn có thể cực kỳ hữu ích trong việc tăng tốc mã.Không chỉ là những người trang trí cực kỳ hữu ích khi bạn tìm thấy chúng, mà còn là một ý tưởng tuyệt vời để viết của riêng bạn.. Not only are decorators incredibly useful when you find them about, but it is also a great idea to write your own. |