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

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -