डांट-फटकार के साथ कुछ अप्रत्याशित बातचीत की संभावनाएं हैं। क्या यह अपेक्षित व्यवहार है?
मुझे एक विधि मिली है:
def leave_room(self, uid):
u = self.user_by_id(uid)
r = self.rooms[u.rid]
other_uids = [ouid for ouid in r.users_by_id.keys() if ouid != u.uid]
other_us = [self.user_by_id(uid) for uid in other_uids]
r.remove_user(uid) # OOPS! uid has been re-bound by the list comprehension above
# Interestingly, it's rebound to the last uid in the list, so the error only shows
# up when len > 1
रोने के जोखिम पर, यह त्रुटियों का एक क्रूर स्रोत है। जैसा कि मैंने नया कोड लिखा है, मैं सिर्फ कभी-कभी रिबॉन्डिंग के कारण बहुत ही अजीब त्रुटियां पाता हूं - अब भी जब मुझे पता है कि यह एक समस्या है। मुझे "हमेशा अंडरस्कोर के साथ सूची बोध में अस्थायी प्रस्तावना" जैसे नियम बनाने की आवश्यकता है, लेकिन यह भी मूर्खतापूर्ण नहीं है।
तथ्य यह है कि इस रैंडम टाइम-बम वेटिंग प्रकार की सूची के सभी अच्छे "उपयोग में आसानी" को नकारता है।
for
लूप निर्माण और for
-लूप्स रिसाव चर के बराबर हैं । तो यह स्पष्ट नहीं था, लेकिन स्पष्ट रूप से कहा गया था।