リスト内包表記のスコープ
テストが通ったり通らなかったりする、変な不具合があったので原因を調べていたら、リスト内包表記のカウンタ変数が、外側のローカル変数を上書いてしまっていたのが原因でした。
def test_method(x): print(x) [x for x in range(10)] print(x) test_method('hello') # => hello # => 9
調べたら有名な話みたいですね。python3ではこの挙動は修正されてるようです。
テストが通ったり通らなかったりする、変な不具合があったので原因を調べていたら、リスト内包表記のカウンタ変数が、外側のローカル変数を上書いてしまっていたのが原因でした。
def test_method(x): print(x) [x for x in range(10)] print(x) test_method('hello') # => hello # => 9
調べたら有名な話みたいですね。python3ではこの挙動は修正されてるようです。