Definisi: Generator seperti fungsi normal yang menghasilkan rentang nilai menggunakan menghasilkan kata kunci. Ini mengembalikan satu objek pada satu waktu. Secara internal menggunakan iterator. Untuk mengakses elemen berikutnya lanjut() fungsi digunakan, atau kita dapat menggunakannya untuk sebuah lingkaran. Jika kami mencoba mengakses nilai di luar rentang, itu menimbulkan Berhenti Iterasi kesalahan.
Kami akan melihat beberapa contoh untuk memahami lebih baik
Ex: fungsi generator untuk rentang nilai
def range_fun(n):x = 0
sedangkan x < n:
hasil x
x + = 1
y = range_fun (3)
#panggil menggunakan for loop
print('Hasilkan nilai menggunakan metode next()')
untuk saya di range_fun(3):
cetak (i)
#panggil generator menggunakan metode selanjutnya
print('Hasilkan nilai menggunakan metode for loop')
cetak(berikutnya(y))
cetak(berikutnya(y))
cetak(berikutnya(y))
print(next(y))#Stop Iterasi pengecualian akan dimunculkan
Ex: Fungsi generator untuk deret Fibonacci
def fib_fun(n):x, y = 0, 1
sedangkan x < n:
hasil x
x, y = y, x + y
z = fib_fun(6) #objek generator
print('Hasilkan nilai menggunakan metode next()')
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
print('Hasilkan nilai menggunakan metode for loop')
untuk saya di fib_fun (6):
cetak (i)
Ex: Fungsi generator untuk membuat rentang nilai yang diberikan nilai awal dan akhir.
def my_range(mulai, akhir):saat ini = mulai
saat ini < end:
menghasilkan arus
saat ini +=1
print('Hasilkan nilai menggunakan metode next()')
angka = rentang_saya(1,5)
cetak(berikutnya(angka))
cetak(berikutnya(angka))
cetak(berikutnya(angka))
cetak(berikutnya(angka))
print('Hasilkan nilai menggunakan metode for loop')
untuk num di my_range(1,5):
cetak (angka)
Ex: Generator untuk mengalikan setiap angka (kurang dari angka) dengan angka a
def gen_mulby_num(maks,num):n = 0
sementara n < max:
hasil n * angka
n + = 1
untuk saya di gen_mulby_num(5,3):
cetak (i)
Ex: Generator untuk menemukan kubus untuk rentang nilai
def gen_mulby_num(maks,num):n = 0
sementara n < max:
hasil n * angka
n + = 1
untuk saya di gen_mulby_num(5,3):
cetak (i)
Ex: beberapa generator: temukan kuadrat bilangan genap yang dihasilkan dari suatu bilangan
Generator 1: menghasilkan nilai genap dari angka yang diberikan
Generator 2: menghasilkan angka kuadrat dari nilai generator1
def gen_even(m):n = 0
sementara n < m:
jika n % 2 == 0:
hasil n
n += 2
def gen_square(angka):
untuk angka dalam angka:
hasilkan 2 * angka
untuk n di gen_square(gen_even(15)):
cetak (n)
Ex: Beberapa generator: buat seri fibnacci dan tambahkan nilai 10 setiap angka.
Generator1: menghasilkan deret fibonacci dari angka tertentu
Generator2: tambahkan setiap angka dengan 10 dari generator1
def gen_fib(n):x, y = 0, 1
sedangkan x < n:
hasil x
x, y = y, x + y
def gen_add_10(angka):
untuk angka dalam angka:
hasil 10 + angka
untuk n di gen_add_10(gen_fib(5)):
cetak (n)
Pemahaman generator:
Pemahaman generator mirip dengan pemahaman daftar di mana daftar menggunakan tanda kurung siku; ini menggunakan tanda kurung biasa.
Ex:
nums = (i untuk i dalam rentang (10))cetak(tipe(angka))
cetak(daftar(angka))
Perbedaan antara Generator dan fungsi normal:
- Sebuah generator memberikan nilai menggunakan menghasilkan kata kunci di mana fungsi normal menggunakan kembali kata kunci
- Generator mulai dari tempat berhentinya saat dipanggil lain kali. Fungsi normal mengeksekusi semua pernyataan setiap saat.
- Generator menghemat memori karena mengembalikan satu nilai pada satu waktu. Jadi kita bisa menggunakannya untuk menghasilkan nilai tak terbatas.
Kesimpulan:
Generator sangat membantu saat kita menangani data yang besar/besar. Pada waktu tertentu, ia hanya menyimpan satu bagian data daripada seluruh data. Konsep generator dianggap sebagai konsep lanjutan dalam python.