type hints ऐसे annotations हैं जिन्हें Python runtime पर लागू नहीं करता; mypy या pyright जैसा static checker उन्हें पढ़कर कोड चलने से पहले गड़बड़ियां बता देता है। फायदा यह है कि None का वहां पहुंच जाना जहां असली वैल्यू चाहिए, ऐसी पूरी की पूरी श्रेणियों के बग पकड़े जाते हैं, साथ में एडिटर की completion और refactoring बहुत बेहतर होती है। ये docstring से ज्यादा भरोसेमंद तरीके से मंशा भी दर्ज करते हैं, क्योंकि docstring पुरानी पड़ जाती है।
इंटरव्यूअर यह क्यों पूछते हैं
गंभीर Python codebases में typing अब डिफॉल्ट अपेक्षा है, इसलिए इंटरव्यूअर देखते हैं कि आप इसे इस्तेमाल करते हैं और इसकी सीमाएं भी समझते हैं। दो बातें वे सुनना चाहते हैं: annotations runtime पर लागू नहीं होते, और पुराने codebase पर types अपनाने की आपके पास धीरे धीरे बढ़ने वाली रणनीति है, ऐसा बड़ा rewrite नहीं जो कभी शिप ही न हो।
अपना जवाब कैसे स्ट्रक्चर करें
- कहें कि annotations static हैं, runtime पर लागू नहीं।
- checker जो ठोस बग पकड़ता है वे गिनाएं।
- पुराने codebase पर धीरे धीरे अपनाना बताएं।
- शुद्धता से आगे टूलिंग वाले फायदे बताएं।
उदाहरण जवाब
runtime पर ये लगभग comments हैं, Python इन्हें रखता है और आगे बढ़ जाता है। असली कीमत तब बनती है जब कोई checker इन्हें पढ़ता है। Mypy वे उबाऊ बग पकड़ता है जो ज्यादातर incidents की वजह बनते हैं, मुख्य रूप से optional वैल्यू का ऐसे कोड में पहुंच जाना जो असली ऑब्जेक्ट मान रहा है, और refactor के बाद signature का बदल जाना जहां एक caller छूट गया हो। मुझे लगभग साठ हजार लाइन का एक codebase विरासत में मिला था जिसमें कोई annotation नहीं था; हमने mypy को लगभग सब कुछ बंद करके चालू किया, उसे CI में डाला ताकि errors की गिनती बढ़ न सके, फिर सीमाओं से शुरू करके module दर module types डाले, जहां डेटा अंदर आता है। strict mode बाद में आया, हर package के लिए अलग, pyproject में per module overrides के साथ। छह महीने में उसने एक payment path में None dereference रिव्यू के दौरान पकड़ा, रात के दो बजे नहीं। दूसरा फायदा जिसे लोग कम आंकते हैं वह एडिटर सपोर्ट है, क्योंकि असली types के साथ rename और go to definition सच में काम करते हैं, जिससे टीम किसी भी चीज को refactor करने में कहीं ज्यादा तैयार रहती है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- अलग अलग types लौटाने वाली फंक्शन को कैसे type करेंगे?
- Any और object में क्या फर्क है?
- mypy कहां कमजोर पड़ जाता है?
Python डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें