क्या पायथन में किसी फ़ाइल या फ़ाइल जैसी ऑब्जेक्ट के लिए उपयोग करने के लिए कोई सही प्रकार का संकेत है? उदाहरण के लिए, मैं इस फ़ंक्शन का रिटर्न मान कैसे टाइप करूंगा?
def foo():
return open('bar')
क्या पायथन में किसी फ़ाइल या फ़ाइल जैसी ऑब्जेक्ट के लिए उपयोग करने के लिए कोई सही प्रकार का संकेत है? उदाहरण के लिए, मैं इस फ़ंक्शन का रिटर्न मान कैसे टाइप करूंगा?
def foo():
return open('bar')
जवाबों:
क्रमशः पाठ मोड या बाइनरी मोड में खोली गई फ़ाइलों के लिए typing.TextIOया तो typing.BinaryIOप्रकार या प्रकार का उपयोग करें ।
से डॉक्स :
कक्षा
typing.IOI / O स्ट्रीम प्रकारों के लिए आवरण नाम स्थान।
यह सामान्य प्रकार
IO[AnyStr]और उपनामTextIOऔरBinaryIOक्रमशःIO[str]और के लिए परिभाषित करता हैIO[bytes]। ये आई / ओ धाराओं के प्रकारों का प्रतिनिधित्व करते हैं जैसे कि वापस लौटेopen()।
def f() -> IO: return open('test')PyCharm में "Expected type 'IO' देता है, 'TextIOWrapper [str]' की जगह"।
IO[str]?
संक्षिप्त उत्तर:
from typing import TextIOसिर्फ नहीं है from typing import *।IOकिस प्रकार का निर्दिष्ट किए बिना किसी फ़ाइल का अर्थ करने के लिए उपयोग करेंTextIOया BinaryIOयदि आप जानते हैंउदहारण के लिए:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
की (PyCharm में) एक निरीक्षण त्रुटि देता है Expected type 'BinaryIO', got 'TextIO' instead