为什么open()比Python中的file()更好?

bal*_*lki 16 python file

可能重复:
Python - 何时使用文件vs打开

从官方python文档,

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

打开文件时,最好使用open()而不是直接调用此构造函数

但它没有给出理由.

jfs*_*jfs 15

Python的禅宗:

应该有一个 - 最好只有一个 - 明显的方法来做到这一点.

所以要么fileopen应该去.

>>> type(file)
<type 'type'>
>>> type(open)
<type 'builtin_function_or_method'>
Run Code Online (Sandbox Code Playgroud)

open是一个可以返回任何东西的函数.file()仅返回file对象.

虽然它似乎open只返回file对象上的Python 2和之前的Python 2.5 fileopen是同一个对象.

正如@gnibbler在评论中建议的那样,存在的原因file可能是将其用作基类的名称.

另外,file()原则上可以返回其他类型,例如int()早期的Python版本:

>>> type(int(2**64)) is long
True
>>> type(int()) is int
True
>>> int is long
False
Run Code Online (Sandbox Code Playgroud)

这个答案与@ Ryan的答案非常相似.

另外BDFL说:

"文件类在Python 2.2中是新的.它表示内置的open()函数返回的对象的类型(类).它的构造函数是open()的别名,但是为了将来和向后兼容,open()仍然是首选." (强调我的)

  • 我自己的特殊观点:`对于文件中的文件:`是如此自然和Pythonic使得它成为一个内置的总是看起来像一个失误.我一直在使用`for file in files:`无论如何,只是因为我喜欢它的外观. (7认同)