Install Web App

Python Tambahan #21 Fungsi Generator dengan yield

profil-penulis

Yuliance Ardies Ferry w.Yehohanan

22 April 2025

Fungsi biasa di Python menggunakan return untuk mengembalikan nilai. Namun, bagaimana jika kamu ingin fungsi yang menghasilkan banyak nilai secara bertahap, bukan sekaligus? Di sinilah peran yield, fitur utama untuk membuat generator function.

Fungsi dengan yield tidak mengembalikan hasil sekaligus, tapi menjeda dan melanjutkan eksekusi setiap kali dipanggil. Ini membuatnya efisien, hemat memori, dan ideal untuk menangani data dalam jumlah besar atau bersifat streaming.
 

Perbedaan return vs yield

  • return mengakhiri fungsi dan mengembalikan satu nilai.

  • yield menyimpan state fungsi dan bisa dipanggil lagi untuk menghasilkan nilai berikutnya.

Contoh:

def hitung():
    for i in range(3):
        yield i

g = hitung()
print(next(g))  # 0
print(next(g))  # 1

Membuat Fungsi Generator

def gen_ganjil(n):
    for i in range(1, n+1, 2):
        yield i

for angka in gen_ganjil(5):
    print(angka)
# Output: 1, 3, 5

Kelebihan Generator dengan yield

  • Efisiensi memori: tidak menyimpan seluruh hasil sekaligus

  • Cocok untuk data besar: misalnya membaca file baris per baris

  • Mendukung infinite sequence: generator bisa berjalan tak terbatas
     

def tak_terbatas():
    i = 0
    while True:
        yield i
        i += 1

Kombinasi dengan next()

Kamu bisa mengakses nilai generator satu per satu secara manual.

g = gen_ganjil(5)
print(next(g))  # 1
print(next(g))  # 3

Jika sudah habis, StopIteration akan dilempar.

Studi Kasus: Membaca File Baris per Baris

def baca_baris(nama_file):
    with open(nama_file) as file:
        for baris in file:
            yield baris.strip()

yield memungkinkan kamu membangun fungsi yang tidak hanya mengembalikan hasil, tetapi juga mengatur aliran data dengan lebih efisien. Ini sangat cocok untuk kasus seperti perulangan besar, pemrosesan data real-time, atau situasi di mana kamu hanya ingin "ambil seperlunya".

Artikel Lainnya Dengan Kategori Terkait :


1. Python Tambahan #01 F-String: Format String Modern

2. Python Tambahan #02 Penulisan Panjang Kode di Dalam Fungsi

3. Python Tambahan #03 Komentar: Docstring dan Tanda #

4. Python Tambahan #04 Membuat List dari String atau Karakter

5. Python Tambahan #05 Perbedaan Positional dan Keyword Argument

6. Python Tambahan #06 Menggunakan Tanda *args dan **kwargs

7. Python Tambahan #07 Fungsi Bawaan: zip(), map(), dan filter()

8. Python Tambahan #08 Penggunaan any() dan all()

9. Python Tambahan #09 Fungsi enumerate() dalam Looping

10. Python Tambahan #10 Fungsi reversed() dan sorted()

11. Python Tambahan #11 Fungsi isinstance() dan id()

12. Python Tambahan #12 Pemrosesan String: replace(), strip(), split()

13. Python Tambahan #13 Menggabungkan String dengan join()

14. Python Tambahan #14 Mengatur Format Tampilan Angka dan Tanggal

15. Python Tambahan #15 Menggunakan Operator Ternary di Python

16. Python Tambahan #16 Destructuring: Unpacking List dan Tuple

17. Python Tambahan #17 Tuple Packing dan Unpacking

18. Python Tambahan #18 Dictionary Comprehension

19. Python Tambahan #19 Set Comprehension dan Operasi Dasarnya

20. Python Tambahan #20 List vs Generator: Apa Bedanya?

21. Python Tambahan #21 Fungsi Generator dengan yield

22. Python Tambahan #22 Menulis Fungsi Lambda yang Ringkas

23. Python Tambahan #23 Fungsi dalam Fungsi (Nested Function)

24. Python Tambahan #24 Fungsi sebagai Argumen dan Return

25. Python Tambahan #25 Pemrosesan File Teks: with open()

26. Python Tambahan #26 Membaca dan Menulis File JSON di Python

27. Python Tambahan #27 Format CSV: Membaca dan Menulis File CSV

Masuk Terlebih dahulu untuk berkomentar

Paling baru
Lihat Lainnya