Baiklah, daftar besar ini akhirnya selesai dimasukkan ke dalam memori.
Tapi ingat istilah kunci kami, ingat bagaimana dia mengatakan daftar itu dapat diubah?
Apa itu iterable?
Nah, iterable adalah objek apa pun dengan Python, yang dapat kita ulangi di bawah kap,
ia memiliki metode Dundar ed.
Jadi ketika objek dibuat, ini itu memungkinkan kita untuk memiliki objek yang dapat diulang
yang dapat diulang untuk mengulangi sesuatu atau iterasi adalah tindakan mengambil item dari iterable, melakukan sesuatu padanya, lalu pergi ke
yang berikutnya.
Ketika kita menggunakan perulangan seperti perulangan for atau perulangan while, kita menyebutnya iterasi.
Itu prosesnya sendiri.
Dan generator.
Benar-benar dapat diubah, yaitu semua yang merupakan generator dapat diubah, Anda dapat mengulanginya, tetapi tidak semua
yang ada.
Iterable adalah generator, misalnya, range adalah generator.
Jadi itu akan selalu dapat diubah.
Tapi daftar itu bisa diubah, tapi itu bukan generator.
Jadi generator adalah bagian dari iterable.
Saya tahu itu banyak kata.
Semoga kau masih bersamaku.
Perbedaan antara generator dan iterable biasa adalah cara kita mengimplementasikannya.
Jadi izinkan saya menunjukkan cara umum untuk membuat generator.
Mari kita bersihkan kode ini dan tentukan generator kita sendiri dan generator biasanya berfungsi seperti range adalah sebuah
fungsi, generator biasanya dibuat dengan cara ini.
Jadi katakanlah fungsi generator.
Dan fungsi generator ini akan memiliki loop for yang akan loop pada rentang seperti yang kita lakukan
sebelumnya.
Namun bedanya disini, mari kita kembalikan kode yang sudah kita miliki sebelumnya.
Dia akan mengomentari ini sehingga kita bisa melihatnya dalam hal perbedaan.
Fungsi generator akan.
Buat, katakanlah, banyak item ini.
Tetapi alih-alih kembali seperti yang kita lakukan dalam fungsi biasa, kita akan menggunakan kata kunci yang disebut
hasil.
Dan di sini kita akan menghasilkan item I so.
Jadi perhatikan perbedaannya di sini.
Nah, jika kita ingin seperti di sini, kita bisa melewati nomor.
Seperti ini, tapi bukannya kembali.
Dan menambahkan daftar ini dan membuat semua data ini, kita akan menggunakan ILD.
Sekarang, apa yang menghasilkan, apakah Anda melihat hasil menjeda fungsi dan kembali ke sana ketika kita melakukan sesuatu padanya, yang disebut
berikutnya, sesuatu yang akan kita bahas segera?
Jadi Yield berkata, hei, jeda fungsinya, hasilkan saja.
Saya memberi saya dan ketika Anda mengatakan kepada saya untuk terus berjalan lagi, maka saya akan terus berjalan.
Jadi bagaimana kita bisa melakukan ini?
Yah saya dapat mengatakan untuk item dalam fungsi generator saya akan.
Cetak barangnya.
Sekarang, di sini, apa yang akan terjadi adalah kita akan mengulang fungsi generator dan kita akan memberikannya ke
fungsi generator, katakanlah seribu untuk saat ini.
Dan kita akan mencetak setiap item dalam fungsi generator karena ini adalah iterable.
Ini akan berjalan dan itu akan berulang dan untuk setiap item dalam nomor ini, jadi itu adalah rentang yang akan kita
hasilkan mengapa?
Jadi itu akan terus berulang dan berulang.
Dan saat kita kembali, saat kita mengulang.
Kami akan menjalankan ini dan hasilnya.
Kembali dan berlari lagi.
Biarkan saya menunjukkan kepada Anda apa yang akan saya komentari, komentari ini juga dan klik Ron di sini.
Apakah Anda melihat bahwa apa yang baru saja kita lakukan di sini mirip dengan di sini, tetapi alih-alih harus membuat daftar
itu di memori, itu terus berjalan satu per satu.
Kami hanya menyimpan satu item di memori.
Dan kami menggunakannya sesuka kami, dalam kasus kami, yang kami lakukan hanyalah mencetak item.
Mari kita telusuri kata kunci hasil ini sedikit lebih banyak.
Apa yang sebenarnya dilakukan?
Katakanlah kita ingin mengalikannya dengan dua, seperti yang kita lakukan di sini dalam contoh asli
kita dengan daftar, tetapi sekarang daripada melakukan perulangan for, panggil saja fungsinya.
Dan katakan G sama dengan fungsi generator dan kita akan memberikannya 100.
Sekarang, jika saya mencetak G dan saya mengklik jalankan.
Anda melihat bahwa saya mendapatkan objek generator.
Saya ingat ini hanyalah cara standar di Python agar kita dapat membuat fungsi generator menggunakan
range dan kata kunci hasil, tetapi kata kunci hasil ini memberi kita kekuatan karena jika saya baru saja kembali ke sini.
Kami tidak akan mendapatkan sesuatu yang istimewa, pada kenyataannya, kami hanya akan mendapatkan nilai
dengan menggunakan kata kunci hasil.
Yang dapat kami lakukan adalah mengubahnya menjadi fungsi generator yang dapat bekerja dengan baik, ini yang dapat saya katakan Next
G.
Sekarang, jika saya mencetak Next G di sini dan saya klik run.
saya mendapatkan nol.
Tapi inilah bagian yang keren, jika saya melakukan NextG dua kali dan kemudian satu kali di sini dan dicetak.
saya mendapatkan untuk.
Mengapa demikian?
Ingat, kata kunci elang menjeda fungsi.
Jadi yang baru saja terjadi di sini adalah saya menjalankan fungsi dengan seratus.
Item pertama di kisaran 100 adalah nol.
Benar.
Nah, di sini, bahkan sebelum saya bisa menjalankan, ini dikatakan, hei, ini adalah fungsi generator, tetapi pertama kali
Anda menjalankannya.
Berikan output nol kali sehingga pertama kali kita menjalankan fungsi ini dan saya klik run.
Aku akan memastikan kita mengubahnya menjadi I.
Ini baru tahun ini.
Jika saya menjalankannya lagi seperti ini, maka sekarang kami ingin Anda mengulanginya dan pergi ke salah satunya.
Jadi satu kali dua, apa itu?
Apa, satu kali membiarkan saya memperbaikinya seperti ini?
Pastikan ini saya, saya dapat karena satu kali dua adalah dua, jika saya menjalankannya lagi dan saya klik jalankan.
saya mendapatkan untuk.
Anda melihat hasil, seperti yang saya katakan sebelumnya, menjeda fungsi dan kembali ke sana saat berikutnya dipanggil.
Jadi jika memiliki kata kunci hasil, itu menjadi generator.
Itu melacak status ini, apa yang kita sebut nilai, dan itu hanya menyimpan data terbaru dalam memori, misalnya,
karena mengingat bahwa karena pada baris terakhir 14, jika saya mencetak Next G.
Ini mengingat bahwa sebelumnya saya ini.
Nah, untuk saat ini, meskipun potongan kode ini sudah berjalan, jika saya menjalankannya di baris 14.
Saya mendapatkan enam.
Karena tiga kali dua, yah, adalah enam, ingat, karena dikalikan dua, jadi izinkan saya menanyakan ini.
Jika katakanlah saya hanya melakukan rentang satu di sini, dan Anda tahu apa?
Mari kita hilangkan kalikan dua.
Jika saya melakukan ini dan saya menjalankan selanjutnya lebih dari sekali, apa yang akan terjadi jika saya mengklik jalankan di sini?
Saya mendapatkan iterasi berhenti, Anda lihat berikutnya dapat dipanggil sebanyak yang kami inginkan, sebanyak yang kami inginkan
hingga rentang ini berakhir dan ketika kami melebihi jumlah item dalam rentang.
Nah, kita mendapatkan iterasi berhenti, eh.
Untuk memberi tahu kami bahwa, hei, Anda tidak dapat menelepon berikutnya lagi.
Kami telah mencapai akhir baris dan ketika kami menggunakan loop for dengan rentang, itu sebenarnya mendeteksi ini di bawah kap
untuk Anda.
Jadi kami dapat menjalankan fungsi seperti ini di mana kami menggunakan range, meskipun range adalah generator, karena for loop
secara otomatis berkata, hei, saya akan berhenti perulangan segera setelah saya menemukan ini berhenti iterasi, tapi itu
tersembunyi dari kami sebagai pengguna.
Sekarang, konsep generator ini cukup sulit untuk dipahami, terutama pada awalnya.
Jadi Anda mungkin harus melihat ini beberapa kali.
Tapi selama beberapa video berikutnya, saya ingin meyakinkan Anda betapa kuatnya mereka.
Saya akan melihat di berikutnya oleh.