Ben şu sonuçlar almak: piton 3.5 olarakisinstance dosya piton 2.7 ve Python 2.7 olarak 3.5
>>> with open("README.md", "r") as fin:
... print(isinstance(fin, file))
...
True
alıyorum:
>>> with open("README.md", "r") as fin:
... print(isinstance(fin, file))
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'file' is not defined
Yani, Tamam ben Python docs bakmak ve öğrenmek Python 3.5'de, dosyalar io.IOBase
(veya bazı alt sınıflar) tipindedir.
>>> import io
>>> with open("README.md", "r") as fin:
... print(isinstance(fin, io.IOBase))
...
True
Ama sonra Python 2.7 içinde çalıştıklarında: Bu beni Öncü
>>> import io
>>> with open("README.md", "r") as fin:
... print(isinstance(fin, io.IOBase))
...
False
Yani bu noktada, kafam karıştı. documentation'a baktığımda, Python 2.7'nin True
numaralı telefonu bildirmesi gerektiğini düşünüyorum. o 18:30 ET var belki de
- Neden Python raporu
False
isinstance(fin, io.IOBase)
için çalışır? - Bir değişkenin hem Python 2.7 ve 3.5'da çalışacak açık bir dosya olduğunu test etmenin bir yolu var mı?
"Bu, Python 2.x altında, yerleşik dosya nesnesine alternatif olarak önerilmiştir", yani 2.x'de aynı değil. –
Bir bağlantınız olduğunu düşünmüyorum, bu yüzden daha fazla okuyabiliyorum, değil mi? – iLoveTux
Bağladığınız sayfanın en üstünde yer alıyor. –