16

重複の可能性:
Python - ファイルとオープンをいつ使用するか

公式のpythonドキュメントから、

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

ファイルを開くときは、このコンストラクターを直接呼び出すのではなく、open() を使用することをお勧めします

しかし、それは理由を与えません。

4

1 に答える 1

18

Python の禅:

それを行う明白な方法が 1 つ (できれば 1 つだけ) ある必要があります。

だからどちらfileopen行くべきです。

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

open何でも返すことができる関数です。file()オブジェクトのみを返しfileます。

openPython 2のオブジェクトのみを返すようですが、 filePython 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 の回答と非常によく似ています。

さらに、BDFL は次のように述べています。

「ファイル クラスは Python 2.2 で新しく追加されました。これは、組み込みの open() 関数によって返されるオブジェクトの型 (クラス) を表します。そのコンストラクターは、open() のエイリアスですが、将来および下位互換性のために、open()引き続き優先されます。」(私のものを強調)

于 2012-08-13T21:31:26.050 に答える