Python的禅宗:
应该有一种-最好只有一种-显而易见的方法。
因此,要么
file还是
open应该去。
>>> type(file)<type 'type'>>>> type(open)<type 'builtin_function_or_method'>
open是可以返回任何内容的函数。
file()仅返回
file对象。
虽然似乎
open只返回
filePython 2上的对象,但在Python 2.5
file和之前
open是相同的对象。
正如@gnibbler在评论中所建议的那样,存在的最初原因
file可能是将其用作基类的名称。
同样,
file()原则上可以返回其他类型,例如
int()在早期的Python版本中:
>>> type(int(2**64)) is longTrue>>> type(int()) is intTrue>>> int is longFalse
这个答案与@Ryan的答案非常相似。
原因有两个:python哲学“应该有一种方法可以做到”并且file正在消失。
file是实际类型(使用例如file(‘myfile.txt’)调用其构造函数)。open是工厂函数,它将返回文件对象。
在python 3.0file中,它将从内置功能转变为由io库中的多个类实现(有点类似于带有缓冲读取器的Java等)。
另外BDFL说:
“文件类是Python 2.2中的新类。它表示内置的open()函数返回的对象的类型(类)。它的构造函数是open()的别名,但
对于将来和向后的兼容性 ,open()仍然是首选。” (强调我的)



