Ответ 1
Должен быть один - и желательно только один - простой способ сделать это.
Значит, нужно либо 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() остается предпочтительным. (выделение мое)