変数名と関数名は同じにしてはいけない

関数はオブジェクトです。変数に代入することも可能です。

>>> range
<built-in function range>
>>> hoge = range
>>> hoge(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]


関数名は関数オブジェクトを参照している変数と考えていいんでしょうか。別の関数を代入することができます。

>>> range(1, 10)  
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range = xrange
>>> range(1, 10)
xrange(1, 10)


このことは関数を予期せぬ形で上書きしてしまう危険性があることを意味しています。

>>> int("10") # ここでのintは関数
10
>>> int = 5   # ここでintは関数ではなく数値になる
>>> int("10") # 数値なので関数呼び出しはできない
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable