python - Does a side-effect inside a loop affect its generator? -
in python v2.7, have come across for statement on for generator in body of loop item source of for generator side effected:
for ssid in (ssid ssid in overlaps if ssid != subseq_id): overlaps = subseq_id_to_overlap_ssids_dict[ssid] my question whether side effect overlaps supposed affect for generator? hope not, if so, mean? if i've processed first matching element , replaced overlaps, for index next location of new value overlaps?
rebinding overlaps inside loop won't have effect on loop (though mutating would). rebinding subseq_iq in side loop affect generator.
a for loop evaluates expression iterator once @ beginning of loop: in case expression name overlaps. once has evaluated expression creates iterator iterable , uses iterator work through elements. iterator depends on object returned expression, doesn't depend on name used identify object (if indeed there name).
if particular case code equivalent to:
for ssid in overlaps: if ssid != subseq_id: overlaps = subseq_id_to_overlap_ssids_dict[ssid] this clearer way write it, again rebinding overlaps doesn't change sequence being used for.
Comments
Post a Comment