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

multithreading - Exception in Application constructor -

React Native allow user to reorder elements in a scrollview list -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -