Cuối cùng chúng ta hãy viết trang trí của riêng chúng ta.
Hãy nhớ rằng, một người trang trí phụ trội hơn chức năng của chúng ta.
Nó chỉ đơn giản là một chức năng bao bọc một chức năng khác và nâng cao hoặc thay đổi nó.
Nhưng cách tốt nhất để tôi giải thích đó là thực sự viết mã của riêng chúng ta.
Vì vậy, chúng ta hãy làm điều đó.
Hãy xác định một của tôi.
Trình trang trí, và trình trang trí này sẽ chấp nhận một chức năng ngay lập tức.
Chúng ta nên biết rằng đây là một hàm thứ tự cao hơn bây giờ ở đây.
Bên trong đây, chúng ta sẽ gọi hàm.
Nhưng trước khi làm điều đó, chúng ta thực sự sẽ gói hàm này trong một hàm khác.
Vì vậy, chúng ta sẽ nói xác định hàm bọc.
Vì vậy, đây chỉ là một trình bao bọc và chức năng bọc này.
Sẽ là một chức năng chỉ đơn giản chạy funk này.
Và cuối cùng chúng ta sẽ chỉ trả về hàm quấn.
Và lưu ý ở đây rằng tôi không gọi nó, tôi chỉ trả lại nó để sau này ai đó có thể sử dụng nó.
Được chứ.
Bây giờ, giả sử chúng ta có một hàm đơn giản.
Xin chào.
Và chức năng đơn giản này chỉ in.
Xin chào.
Thật là một chức năng vô dụng.
Hiện nay.
Tại sao điều này lại hữu ích?
Bởi vì bây giờ tôi có thể sử dụng nó như là decorator python.
Ngay khi chúng ta viết chữ A ở phía trước, chúng ta sẽ nói rằng, đây sẽ là một người trang trí và
người trang trí.
Miễn là chúng ta tuân theo cú pháp chấp nhận một hàm, có một hàm wrapper, gọi hàm và trả
về hàm wrapper có thể được sử dụng.
Vì vậy, nếu tôi thực hiện việc trang trí của mình, xem tất cả màu xanh lam như thế nào.
Bây giờ trình trang trí này thực sự có thể được sử dụng trên đầu khi xác định các chức năng của chúng tôi.
Vì vậy, nếu chúng tôi muốn sử dụng trình trang trí của tôi trên hàm hello, chúng tôi sử dụng nó như thế này để khi tôi gọi hello tiếp theo
trong chương trình của mình.
Tôi bấm chạy.
Tôi có.
Xin chào?
Được chứ.
Tôi biết bạn đang nghĩ gì.
Anh đang nghĩ điều này thật lãng phí thời gian, Andre.
Tại sao tôi phải làm tất cả những điều đó?
Tôi có thể vừa mới làm điều này.
Chỉ cần xác định.
Xin chào.
Và đó là nó.
Tôi thấy bối rối.
Đây là vấn đề.
Những gì chúng tôi vừa làm với người trang trí.
Không thay đổi bất cứ điều gì.
Nó hoạt động chính xác như mong đợi.
Nhưng những gì nó cho phép chúng tôi làm là bây giờ chúng tôi có thể thêm chức năng bổ sung.
Hãy nhớ cách tôi đã nói rằng decorator là một hàm giống như decorator của tôi, nó kết thúc ở đây một hàm khác là hàm mà
chúng ta truyền nó vào.
Và tăng cường nó.
Vì vậy, làm thế nào chúng ta có thể tăng cường?
Xin chào?
Chà, chúng ta có thể làm bất cứ điều gì bên trong chức năng được bao bọc này.
Ví dụ, tôi có thể nói in, và sau đó chúng tôi sẽ chỉ in một số ngôi sao ở đây và có thể in.
Một tập hợp các ngôi sao ở đây để khi tôi gọi là chạy.
Bùng nổ.
Chúng tôi vừa siêu tăng cường của chúng tôi.
Xin chào.
Hàm số.
Làm thế nào là mát đó là?
Và đây là lý do tại sao trình trang trí hữu ích bằng cách chỉ thêm một dòng này.
Tôi có thể tăng cường một hàm để giả sử tôi tạo một hàm khác được gọi là.
Từ biệt.
Và lần mua này sẽ được in.
Gặp lại sau.
Bằng cách gọi tại đây và nhấp vào chạy.
Chà, không có gì thay đổi.
Nhưng nếu tôi muốn siêu tăng nó, giống như.
Xin chào.
Tất cả những gì tôi cần làm chỉ là sao chép trình trang trí và sử dụng nó ở đây.
Vì vậy, nếu tôi chạy nó.
Chúng ta bắt đầu.
Chúng tôi đã tăng cường mua hàng của mình.
Đây là sức mạnh của những người trang trí.
Chỉ bằng cách sử dụng cú pháp này, tôi có thể thêm chức năng bổ sung cho các chức năng khác.
Bây giờ tôi biết bạn đang nghĩ gì.
Và tôi biết tôi cũng tiếp tục nói điều đó rất nhiều.
Nó giống như tôi có thể đọc được suy nghĩ, nhưng.
Bạn đang nghĩ đây là một điều kỳ diệu.
Trình thông dịch Python làm tất cả những điều này như thế nào?
Nó có vẻ như.
Chà, ma thuật, phải không?
Bên dưới mui xe.
Tất cả những gì nó làm.
Để tôi chỉ cho bạn.
Dựa trên những gì chúng ta đã học được cho đến nay về các chức năng, bởi vì họ là những công dân hạng nhất.
Đúng.
Tất cả những gì chúng tôi đang làm là theo nghĩa đen.
Chúng tôi đang nói biến a.
Bằng nhau.
Xin chào?
Và gói lời chào này và gọi nó bằng người trang trí của tôi.
Vì vậy, tôi đang nói người trang trí của tôi.
Và sau đó tôi đang chạy một như thế này.
Vì vậy, hãy nói điều này là xin chào.
Vâng, tôi chỉ đang chạy nó.
Như vậy.
Vì vậy, nếu tôi chạy điều này.
Mọi thứ vẫn hoạt động.
Tất cả những gì tôi đang làm là gói chức năng xin chào của mình.
Với trình trang trí của tôi và gán nó cho một biến.
Vì vậy, nếu chúng ta đi từng bước, chúng ta thấy rằng trình trang trí của tôi nhận được một hàm.
Trong trường hợp của chúng ta, hàm hello.
Sau đó, nó trả về hàm được bao bọc này có hello ở đây.
Vì vậy, chúng tôi trả lại chức năng bọc này.
Vì vậy, xin chào bây giờ bằng hàm được bao bọc này và sau đó hàm được bao bọc này được gọi và nó được gọi với
cái gì.
Nó in cái này, sau đó nó chạy hàm hello và sau đó nó in cái này.
Nó cũng giống như làm một cái gì đó như thế này.
Chúng tôi chỉ đơn giản gọi nó một lần nữa.
Nếu tôi chạy cái này.
Nó hoạt động.
Trông thật lạ phải không?
Nhưng nó sẽ có ý nghĩa.
Chúng ta đang gọi hàm đầu tiên và hàm đầu tiên trả về một hàm khác, sau đó chúng
ta gọi hàm trả về tiếp theo, đó là hàm quấn.
Bây giờ lý do decorator hữu ích là vì thay vì làm điều này và thực sự trông có vẻ khó hiểu, tôi chỉ có
thể thêm vào decorator của mình và chúng ta không cần phải làm tất cả những điều này.
Lời chào của chúng tôi được người trang trí của tôi tự động gói lại, nhưng về cơ bản đây là những gì mà cảnh nghệ thuật đang
làm.
Nhìn thấy?
Không có gì kỳ diệu về nó.
Hiện nay.
Ngay lập tức.
Điều này thật hay, nhưng tôi cá là bạn vẫn đang thắc mắc tại sao trình trang trí lại hữu ích.
Vì vậy, để thực sự hoàn thiện sự hiểu biết của chúng ta về decorator, chúng ta hãy tạm nghỉ và tôi sẽ gặp lại các bạn
trong video tiếp theo.