क्या पायथन में किसी फ़ाइल या फ़ाइल जैसी ऑब्जेक्ट के लिए उपयोग करने के लिए कोई सही प्रकार का संकेत है? उदाहरण के लिए, मैं इस फ़ंक्शन का रिटर्न मान कैसे टाइप करूंगा?
def foo():
return open('bar')
क्या पायथन में किसी फ़ाइल या फ़ाइल जैसी ऑब्जेक्ट के लिए उपयोग करने के लिए कोई सही प्रकार का संकेत है? उदाहरण के लिए, मैं इस फ़ंक्शन का रिटर्न मान कैसे टाइप करूंगा?
def foo():
return open('bar')
जवाबों:
क्रमशः पाठ मोड या बाइनरी मोड में खोली गई फ़ाइलों के लिए typing.TextIO
या तो typing.BinaryIO
प्रकार या प्रकार का उपयोग करें ।
से डॉक्स :
कक्षा
typing.IO
I / 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