ブログ

読んで思い出す。忘れるために書く

Q. TypeError: 'range' object is not callable で range(n) が呼び出せない

A. del を使って定義を削除する

# 誤って組み込みオブジェクトへの参照定義を上書きしてしまった...!! 初心者なので...!!
range = range(10)

# ここではエラーなく実行できる
for i in range:
    print(i)

# 次回呼び出し時にエラーになる... ので del する
del range # del することで再び range が使用可能になる
for i in range(5):
    print(i)

# TIPS: del しない場合は `__builtins__.range` で呼び出せる

「なんの range であるか」明示的な名前付けをするか、律儀に毎回 range() を呼び出すかしたほうがよさそう

Links