Почему open() предпочтительнее над файлом() в Python?

Возможный дубликат:
Python - Когда использовать файл vs open

В официальной документации на python

http://docs.python.org/library/functions.html#file

При открытии файла предпочтительнее использовать open() вместо вызова этот конструктор напрямую

Но это не дает причины.

Ответ 1

Zen of Python:

Должен быть один - и желательно только один - простой способ сделать это.

Значит, нужно либо file, либо open.

>>> type(file)
<type 'type'>
>>> type(open)
<type 'builtin_function_or_method'>

open - это функция, которая может вернуть что угодно. file() возвращает только объекты file.

Хотя кажется, что open возвращает только объекты file на Python 2. И до того, как Python 2.5 file и open будут тем же самым объектом.

Как пояснил @gnibbler в комментариях, исходной причиной существования file может быть использование его в качестве имени для базовых классов.

Кроме того, file() в принципе может возвращать другие типы, например, int() для предыдущих версий Python:

>>> type(int(2**64)) is long
True
>>> type(int()) is int
True
>>> int is long
False

Этот ответ очень похож на @Ryan answer.

Кроме того BDFL сказал:

"Класс файла является новым в Python 2.2. Он представляет тип (класс) объектов, возвращаемых встроенной функцией open(). Его конструктор является псевдонимом для open(), но для будущей и обратной совместимости, open() остается предпочтительным. (выделение мое)