Jadi mari kita bicara tentang beberapa aplikasi praktis dari dekorator yang saya maksud, kita sudah melihatnya di
kelas, bukan?
Kami melihat bagaimana metode kelas dan metode statis dapat membuat metode kelas dan metode statis di kelas yang
dapat digunakan oleh kelas langsung.
Dan jika Anda tidak ingat ini, kembali saja ke video itu.
Tapi saya ingin menunjukkan kepada Anda salah satu contoh dekorator favorit saya, kami akan membuatnya sendiri.
Apa yang akan kami lakukan adalah saya ingin tampil.
Dekorator dan omong-omong, dekorator ini tidak ada di Python, kita akan membuatnya dari awal.
Yang ingin saya lakukan adalah dapat memiliki dekorator kinerja yang dapat saya gunakan selama pengujian kode saya untuk melihat seberapa
cepat kode saya berjalan.
Misalnya, jika saya memiliki suatu fungsi, katakanlah waktu yang lama.
Yah, waktu yang lama untuk menyelesaikan, jadi saya akan melakukan loop yang sangat panjang dan mengatakan untuk I dalam kisaran katakanlah.
Semua angka ini, dan saya hanya akan melakukan perhitungan acak, saya kalikan lima.
Fungsi ini, saya ingin tahu seberapa baik kinerjanya, berapa milidetik yang dibutuhkan untuk menyelesaikan ini, jadi bagaimana
kita bisa membangunnya?
Pertama, saya akan melakukan sesuatu yang belum kita bicarakan, bahwa kita akan melakukan sesuatu
tentang modul dalam modul bawaan, jadi untuk saat ini, kita tidak akan terlalu
banyak membicarakannya, tetapi kita akan untuk mengimpor dari modul waktu sesuatu yang disebut waktu ganda.
Sekali lagi, sesuatu yang akan kita bicarakan di bagian modul kursus, pada dasarnya saya mengatakan,
hei, ketika saya menginstal Python atau dalam kasus saya ketika saya menggunakan Reppel ini, ia memiliki akses ke waktu ini jika saya
bertanya untuk itu.
Dan dalam hal ini, saya berkata, hei, saya ingin menggunakan objek atau modul waktu ini yang saya dapatkan dari Python.
Dan di sini kita akan membuat dekorator kita mengikuti pola yang telah kita pelajari.
Saya akan mengatakan mendefinisikan kinerja dan kinerja akan menerima fungsi seperti yang telah kita lihat sebelumnya.
Dan di sini kita akan memiliki pembungkus kita.
Jadi katakanlah fungsi pembungkus dan fungsi pembungkus.
Jika Anda ingat, itu akan menjadi fleksibel dengan mengambil busur bintang dan kata kunci bintang bintang.
Sehingga kita dapat melewatkan parameter berapa pun yang kita inginkan, karena kita tidak tahu bagaimana fungsi ini, berapa banyak parameter
yang akan dimiliki, dan saya ingin dapat menggunakan kinerja pada semua fungsi saya.
Sekarang, di sini pertama, apa yang akan kita lakukan adalah kita akan mendapatkan hasil dari fungsi tersebut.
Jadilah.
Fungsi yang kami terima di sini dan kemudian hanya mengatakan.
Jalankan fungsi dengan busur kata kunci bintang dan bintang bintang.
Dan akhirnya, di akhir ini, saya ingin mengembalikan hasilnya.
Dan akhirnya, kita akan mengembalikan rapper, jadi tidak ada yang belum pernah kita lihat sebelumnya, saya bisa saja melakukan kembali ke sini
atau menjalankan fungsinya, tapi saya akan menunjukkan kepada Anda mengapa saya melakukannya dengan cara ini sebentar lagi .
Saat ini, fungsi kami tidak benar-benar melakukan apa pun.
Jika saya klik, jalankan.
Yah, tidak ada yang terjadi jika saya melakukan waktu yang lama dan saya menjalankan fungsi ini.
Hanya butuh waktu lama untuk berlari, tapi hanya itu, tidak ada yang terjadi.
Ini adalah saat kita membuat hal-hal menarik.
Kami ingin menghitung dari awal menjalankan fungsi ini hingga akhir menjalankan fungsi ini.
Dan kita dapat menggunakan modul waktu untuk melakukan ini.
Saya dapat membuat garis waktu variabel untuk memulai dan hanya mengatakan waktu.
Jadi saya menjalankan fungsi waktu ini yang akan dimulai.
Sebuah waktu dan berkata, hei, waktu awal ini akan menjadi satu.
Dan setelah fungsi ini, fungsi utama kita, lama berjalan, saya akan mengatakan T dua dan berkata, hei,
jam berapa?
Sekarang.
Jadi kali ini kita akan memeriksa jam berapa sekarang dan kemudian kita akan menjalankan fungsi ini dan kemudian
kali ini akan memeriksa waktu dan seberapa banyak perbedaan antara keduanya adalah berapa lama waktu
yang dibutuhkan.
Benar.
Jadi yang kita lakukan hanyalah mencetak senar F dan mengatakan bahwa dibutuhkan T satu dikurangi T.
Benar, dan ini sebenarnya mengembalikan satu milidetik, jadi saya hanya akan mengatakan lengan empat milidetik.
Dan itu saja.
Saya telah membungkus fungsi saya hanya dengan potongan waktu tambahan ini, dan kemudian saya mencetak segera setelah kami menjalankan fungsi, berapa
lama waktu yang dibutuhkan.
Jadi mari kita periksa.
Jika sekarang saya menjalankan fungsi lama saya di sini dan saya mengklik run.
Baiklah, saya mendapatkan angka minus karena saya kacau di sini.
Ini seharusnya T dua dikurangi T satu, karena waktu di T satu beberapa waktu berlalu dan kemudian dua.
Jadi dua akan selalu lebih besar dari T satu jika saya menjalankan ini.
Baiklah, butuh titik satu, enam milidetik, saya pikir ini sebenarnya detik.
Sekarang, mari kita buat fungsi yang panjang ini lebih lama lagi jika saya seperti ini dan klik run.
Oh, nak, itu butuh satu koma sembilan detik.
Bagaimana jika saya membuatnya lebih lama, jika saya mengklik run dan ini adalah bagian di mana saya terus berbicara sampai fungsi berjalan,
karena akan ada keheningan yang canggung, jika tidak, semoga ini segera berakhir karena tidak ada lagi
yang perlu saya bicarakan.
Ayolah, ini semakin canggung.
Baiklah.
Ayo.
Oh Boy.
Aku akan maju cepat lewat sini.
Oh, nak, butuh 19 detik.
Itu sangat buruk.
Tapi sekarang saya memiliki dekorator yang dapat saya berikan ke hampir semua fungsi dalam program saya dan sebenarnya mengukur
kinerja fungsi saya cukup berguna, bukan?
Saya dapat memiliki potongan kode ini.
Dan sebelum katakanlah saya menyebarkan kode saya atau mengeluarkan kode saya ke dunia, saya dapat menguji seberapa berkinerja fungsi saya dan mungkin
saya dapat mengoptimalkan berbagai hal dengan cara yang berbeda.
Sangat, sangat berguna.
Dan saya melakukannya hanya dalam beberapa baris kode.
Sembilan baris kode.
Sekarang, ingatlah, dekorator kinerja ini tergantung pada mesin dan seberapa cepat CPU dan memori Anda di
komputer Anda.
Jadi untuk waktu yang saya perlukan 19 detik mungkin membutuhkan lebih banyak atau lebih sedikit, tergantung pada mesin Anda.
Tapi ini adalah cara yang bagus untuk membandingkan fungsi secara relatif.
Jadi saya harap setelah ini, Anda melihat kekuatan dekorator dekorator banyak digunakan di perpustakaan dan kerangka kerja
Python.
Kerangka kerja web yang akan kita bicarakan, seperti Django dan flask menggunakan dekorator, mungkin
Anda ingin memiliki beberapa dekorator otentikasi, jadi Anda melakukan otentikasi di mana setiap fungsi hanya dapat dijalankan.
Jika pengguna diautentikasi.
Mungkin mereka memiliki hak istimewa untuk menjalankan fungsi seperti masuk ke situs Web.
Atau mungkin Anda hanya perlu logging atau logging.
Dekorator yang baru saja mencatat dan memberi tahu basis data Anda bahwa, hei, seseorang telah masuk ke sistem Anda atau,
hei, seseorang telah membeli sesuatu dari Amazon.
Atau, hei, seseorang baru saja meminta permintaan pertemanan, ada begitu banyak kegunaan untuk dekorator dan dekorator adalah topik
yang sulit.
Anda tidak akan melihatnya di seluruh kode Python.
Itu hanyalah fitur tambahan yang dapat Anda gunakan saat Anda semakin nyaman dengan Python.
Tapi saya harap pada akhir aula ini, Anda paling tidak akan memahaminya untuk mungkin suatu hari membangun milik Anda sendiri
atau menggunakan yang sudah dibuat sebelumnya oleh perpustakaan dan kerangka kerja.
Sampai jumpa di yang berikutnya.
Selamat tinggal.