Mari kita akhirnya menulis dekorator kita sendiri.
Ingat, seorang dekorator meningkatkan fungsi kita.
Ini hanyalah fungsi yang membungkus fungsi lain dan meningkatkannya atau mengubahnya, tetapi cara terbaik bagi saya untuk menjelaskan apa
itu, adalah dengan benar-benar membuat kode kita sendiri.
Jadi mari kita lakukan itu.
Mari kita definisikan sebuah my.
Dekorator dan dekorator ini akan segera menerima fungsi, kita harus tahu bahwa ini adalah
fungsi tingkat tinggi sekarang di sini.
Di dalam sini, kita akan memanggil fungsi, tetapi sebelum kita melakukannya, kita sebenarnya akan membungkus fungsi
ini dalam fungsi lain.
Jadi kita akan mengatakan define fungsi wrap.
Jadi ini hanya pembungkus dan fungsi pembungkus ini.
Akan menjadi fungsi yang hanya menjalankan funk ini dan akhirnya hanya akan mengembalikan bungkus.
Fungsi dan perhatikan di sini bahwa saya tidak memanggilnya, saya hanya mengembalikannya sehingga nanti seseorang dapat menggunakannya.
OK, sekarang misalkan kita memiliki fungsi sederhana, halo, dan fungsi sederhana ini, hanya pangeran.
Halo, apa fungsi yang tidak berguna.
Sekarang, mengapa ini berguna, karena sekarang saya dapat menggunakan ini sebagai dekorator Python segera setelah kita menulis A di
depan ini akan mengatakan, hei, ini akan menjadi dekorator dan dekorator,
selama kita mengikuti sintaks menerima fungsi, memiliki fungsi pembungkus, memanggil fungsi dan mengembalikan
fungsi pembungkus dapat digunakan.
Jadi jika saya melakukan dekorator saya, lihat bagaimana semuanya menjadi biru.
Sekarang, dekorator ini sebenarnya dapat digunakan di atas ketika mendefinisikan fungsi kita, jadi jika kita ingin menggunakan dekorator saya
pada fungsi halo, kita menggunakannya seperti ini sehingga ketika saya memanggil halo berikutnya di program saya.
Saya klik, lari.
saya mendapatkan halo.
Oke, aku tahu apa yang kamu pikirkan, kamu pikir ini buang-buang waktu, Andre.
Kenapa aku harus melakukan semua itu?
Saya bisa saja melakukan ini hanya untuk menemukan halo.
Dan itu saja.
Aku begitu bingung.
Nah, inilah masalahnya.
Apa yang baru saja kita lakukan dengan dekorator.
Tidak mengubah apa pun.
Ia bekerja persis seperti yang diharapkan.
Tapi apa yang memungkinkan kami lakukan adalah sekarang kami dapat menambahkan fungsionalitas tambahan.
Ingat bagaimana saya mengatakan bahwa dekorator adalah fungsi seperti dekorator saya yang membungkus yang ada di sini fungsi lain, yang merupakan
fungsi yang kita lewati.
Dan meningkatkannya, jadi bagaimana kita bisa meningkatkan halo?
Yah, kita bisa melakukan apa saja di dalam fungsi yang dibungkus ini, misalnya, saya bisa mengatakan print dan
kemudian kita akan mencetak beberapa bintang di sini dan mungkin mencetak.
Satu set bintang di sini sehingga ketika saya memanggil Ron.
Boom, kami baru saja meningkatkan halo kami.
Fungsi.
Betapa kerennya itu?
Dan inilah mengapa dekorator berguna hanya dengan menambahkan satu baris ini, saya dapat meningkatkan fungsi super sehingga katakanlah saya
membuat fungsi lain yang disebut.
Oleh dan pembelian ini akan dicetak.
Sampai jumpa lagi.
Dengan menelepon di sini dan mengklik jalankan.
Yah, tidak ada yang berubah, tetapi jika saya ingin meningkatkannya, seperti halo, yang perlu saya
lakukan hanyalah menyalin dekorator dan menggunakannya di sini juga sehingga jika saya menjalankannya.
Ini dia, kami telah meningkatkan kekuatan kami.
Ini adalah kekuatan dekorator hanya dengan menggunakan sintaks ini, saya dapat menambahkan fungsionalitas tambahan ke fungsi
lain.
Sekarang, saya tahu apa yang Anda pikirkan dan saya tahu saya juga terus mengatakan itu, sepertinya saya bisa membaca pikiran,
tapi.
Anda berpikir ini banyak keajaiban, bagaimana juru bahasa Python melakukan semua ini?
Sepertinya, yah, sihir, kan?
Di balik kap mesin, semuanya berjalan dengan baik, izinkan saya menunjukkan kepada Anda, berdasarkan apa yang telah kita pelajari sejauh ini
tentang fungsi, karena mereka adalah warga negara kelas satu, bukan?
Yang kami lakukan hanyalah ini.
Kami mengatakan variabel A.
Sama dengan halo.
Dan membungkus ini halo dan menyebutnya dengan dekorator saya.
Jadi saya katakan dekorator saya.
Dan kemudian setelah itu, saya menjalankan seperti ini.
Jadi katakanlah ini halo dengan baik, saya hanya menjalankannya.
Seperti begitu.
Sehingga jika saya menjalankan ini.
Semuanya masih berfungsi.
Yang saya lakukan hanyalah membungkus fungsi hello saya.
Dengan dekorator saya dan menugaskannya ke variabel.
Jadi jika kita melangkah selangkah demi selangkah, kita melihat bahwa dekorator saya menerima fungsi dalam kasus kita fungsi
halo, kemudian mengembalikan fungsi yang dibungkus ulang ini yang memiliki halo di sini.
Jadi kami mengembalikan fungsi tikus ini.
Jadi hello to now sama dengan fungsi yang dibungkus ini dan kemudian fungsi yang dibungkus ini dipanggil.
Dan dengan apa itu disebut.
Yah itu mencetak ini kemudian menjalankan fungsi halo dan kemudian mencetak ini.
Ini sama saja dengan melakukan sesuatu seperti ini.
Kami hanya menyebutnya lagi jika saya menjalankan ini.
Ini bekerja, yang terlihat aneh, bukan, tetapi harus masuk akal.
Kami memanggil fungsi pertama dan fungsi pertama mengembalikan fungsi lain dan kemudian kami memanggil fungsi
yang dikembalikan berikutnya, yaitu fungsi rep.
Sekarang, alasan mengapa dekorator berguna adalah karena alih-alih melakukan ini dan, sejujurnya, terlihat membingungkan, saya hanya
dapat menambahkan dekorator di saya dan kita tidak perlu melakukan semua ini.
Halo.
Dibungkus secara otomatis oleh dekorator saya.
Tetapi pada dasarnya inilah yang dilakukan oleh tugas tersebut.
Lihat, tidak ada yang ajaib tentang itu.
Nah, sekarang, ini bagus, tapi saya yakin Anda masih bertanya-tanya mengapa dekorator berguna.
Jadi untuk benar-benar menyelesaikan pemahaman kita tentang dekorator, mari kita istirahat dan sampai jumpa di
video berikutnya.