বোধগম্যতার সাথে স্কোপিংয়ের সাথে কিছু অপ্রত্যাশিত ইন্টারঅ্যাকশন হচ্ছে। এটা কি প্রত্যাশিত আচরণ?
আমি একটি পদ্ধতি পেয়েছি:
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
-লুপ ফাঁস ভেরিয়েবলের সমান । সুতরাং এটি সুস্পষ্ট ছিল না তবে সুস্পষ্টভাবে বিবৃত ছিল।