Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!

Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount

Generator


Generators sangat mudah untuk diimplementasikan, tetapi sedikit sulit untuk dipahami.

Generator digunakan untuk membuat iterator, tetapi dengan pendekatan yang berbeda. Generator adalah fungsi sederhana yang mengembalikan sekumpulan item yang dapat diiterasi, satu per satu, dengan cara yang khusus.

Saat iterasi atas sekumpulan item dimulai menggunakan pernyataan for, generator dijalankan. Setelah kode fungsi generator mencapai pernyataan "yield", generator menghentikan eksekusinya kembali ke loop for, mengembalikan nilai baru dari set tersebut. Fungsi generator dapat menghasilkan sebanyak mungkin nilai (mungkin tak terbatas) sesuai yang diinginkan, dengan memberikan satu setiap gilirannya.

Berikut adalah contoh sederhana dari fungsi generator yang mengembalikan 7 bilangan bulat acak:

  import random

  def lottery():
      # mengembalikan 6 angka antara 1 dan 40
      for i in range(6):
          yield random.randint(1, 40)

      # mengembalikan angka ke-7 antara 1 dan 15
      yield random.randint(1, 15)

  for random_number in lottery():
         print("Dan angka berikutnya adalah... %d!" %(random_number))

Fungsi ini memutuskan sendiri bagaimana cara menghasilkan angka acak, dan menjalankan pernyataan yield satu per satu, berhenti di antara untuk mengembalikan eksekusi ke loop for utama.

Exercise

Tulis fungsi generator yang mengembalikan deret Fibonacci. Mereka dihitung menggunakan formula berikut: Dua angka pertama dalam deret selalu sama dengan 1, dan setiap angka berikutnya yang dikembalikan adalah jumlah dari dua angka terakhir. Petunjuk: Bisakah Anda menggunakan hanya dua variabel dalam fungsi generator? Ingatlah bahwa penugasan dapat dilakukan secara bersamaan. Kode

a = 1
b = 2
a, b = b, a
print(a, b)

akan secara bersamaan menukar nilai a dan b.

# fill in this function def fib(): pass #this is a null statement which does nothing when executed, useful as a placeholder. # testing code import types if type(fib()) == types.GeneratorType: print("Good, The fib function is a generator.") counter = 0 for n in fib(): print(n) counter += 1 if counter == 10: break # fill in this function def fib(): a, b = 1, 1 while 1: yield a a, b = b, a + b # testing code import types if type(fib()) == types.GeneratorType: print("Good, The fib function is a generator.") counter = 0 for n in fib(): print(n) counter += 1 if counter == 10: break test_output_contains("Good, The fib function is a generator.") success_msg('Good work!')

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial Take the Test
Copyright © learnpython.org. Read our Terms of Use and Privacy Policy