内包には、スコーピングとの予期しない相互作用がいくつかあります。これは予想される動作ですか?
私はメソッドを持っています:
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泣き言を言うリスクがあるので、これは残忍なエラーの原因です。新しいコードを書いていると、再バインドが原因で非常に奇妙なエラーがときどき見つかります。「リスト内包表記のtemp varは常にアンダースコアで始まる」というルールを作成する必要がありますが、それでも絶対に確実なわけではありません。
このランダムな時限爆弾の待機の種類があるという事実は、リスト内包のすべての優れた「使いやすさ」を無効にします。
for構文およびfor-loopsリーク変数と同等であると記載されています。したがって、それは明示的ではなく、暗黙的に述べられていました。