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

时间:2012-08-13 21:18:54

标签: python file

  

可能重复:
  Python - When to use file vs open

从官方python文档中,

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

  

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

但它没有给出理由。

1 个答案:

答案 0 :(得分:15)

The Zen of Python

  

应该有一个 - 最好只有一个 - 显而易见的方法。

因此fileopen应该去。

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

open是一个可以返回任何内容的函数。 file()仅返回file个对象。

虽然似乎open仅在Python 2上返回file个对象。在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

这个答案与@Ryan's answer非常相似。

另外BDFL said

  

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