I have a question regarding the differences between yield and yield from, particularly when they are used in combine with islice. Here is my code:
def get_table_row():
iter_veh = get_data(fp_vehicle, vehicles_cols, Vehicles)
iter_per = get_data(fp_personal, personals_cols, Personals)
iter_emp = get_data(fp_employment, employments_cols, Employments)
iter_upd = get_data(fp_update, updates_cols, Updates)
yield from ((*v, *p, *e, *u) for v, p, e, u in zip(iter_veh, iter_per, iter_emp, iter_upd))
from itertools import islice
for row in islice(get_table_row(), 5):
print(*row)
This will correctly print out 5 rows of records from the table.
HOWEVER, if I use the following code:
def get_table_row():
iter_veh = get_data(fp_vehicle, vehicles_cols, Vehicles)
iter_per = get_data(fp_personal, personals_cols, Personals)
iter_emp = get_data(fp_employment, employments_cols, Employments)
iter_upd = get_data(fp_update, updates_cols, Updates)
yield ((*v, *p, *e, *u) for v, p, e, u in zip(iter_veh, iter_per, iter_emp, iter_upd))
from itertools import islice
for row in islice(get_table_row(), 5):
print(*row)
This will lead to print out of all rows. The only difference here is yield from vs. yield. Need a explanation. Thanks!