ব্যবহারের ক্ষেত্রে, জেনারেটরের ক্রিয়াকলাপের জেনারেটরের কোনও কার্যের মধ্যে পার্থক্য মনে রাখবেন।
একটি জেনারেটর অবজেক্ট কেবল একবার ব্যবহার করা হয়, একটি জেনারেটরের ফাংশনের বিপরীতে, যা আপনি যখন একবার আবার কল করেন তখন এটি পুনরায় ব্যবহার করা যেতে পারে, কারণ এটি একটি নতুন জেনারেটর অবজেক্ট ফিরিয়ে দেয়।
জেনারেটর এক্সপ্রেশনগুলি অনুশীলনে সাধারণত "কাঁচা" ব্যবহৃত হয়, কোনও ফাংশনে এগুলি মোড়ানো না করে এবং তারা একটি জেনারেটর বস্তু ফেরত দেয়।
যেমন:
def range_10_gen_func():
x = 0
while x < 10:
yield x
x = x + 1
print(list(range_10_gen_func()))
print(list(range_10_gen_func()))
print(list(range_10_gen_func()))
কোন ফলাফল:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
কিছুটা আলাদা ব্যবহারের সাথে তুলনা করুন:
range_10_gen = range_10_gen_func()
print(list(range_10_gen))
print(list(range_10_gen))
print(list(range_10_gen))
কোন ফলাফল:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
[]
এবং একটি জেনারেটর এক্সপ্রেশন সঙ্গে তুলনা করুন:
range_10_gen_expr = (x for x in range(10))
print(list(range_10_gen_expr))
print(list(range_10_gen_expr))
print(list(range_10_gen_expr))
যা আউটপুটস:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
[]