python · Python
संदेश
KeyError: 'name'
इसका मतलब
वह key dict में नहीं है, और उद्धरण के भीतर का पाठ ठीक वही key है जिसे खोजा गया — वहीं से शुरू करें, क्योंकि आमतौर पर यह टाइपिंग की चूक, बड़े-छोटे अक्षर का अंतर, या API उत्तर का ढाँचा आपकी कल्पना से अलग होना होता है। यदि मान वास्तव में वैकल्पिक है तो d.get("name") None देता है और d.get("name", 0) एक डिफ़ॉल्ट; पर अनिवार्य मान पर .get लगाने से त्रुटि की जगह एक None आपके कोड में बहता है और बहुत दूर जाकर फूटता है।
सुधार
इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।
- कौन देता है
- python
- Python
- 18
Python का traceback उत्तर को दो हिस्सों में बाँटता है — अंतिम पंक्ति बताती है कि क्या ग़लत हुआ, और उसके ऊपर के frames बताते हैं कि कहाँ — इसलिए केवल अंतिम पंक्ति पढ़ने पर नाम मिलता है और जगह छूट जाती है; और NoneType तथा KeyError जैसी "मान नहीं है" वाली त्रुटियों में कारण लगभग हमेशा उस frame से ऊपर होता है जहाँ गिरा।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “KeyError: 'name'” का क्या मतलब है?
वह key dict में नहीं है, और उद्धरण के भीतर का पाठ ठीक वही key है जिसे खोजा गया — वहीं से शुरू करें, क्योंकि आमतौर पर यह टाइपिंग की चूक, बड़े-छोटे अक्षर का अंतर, या API उत्तर का ढाँचा आपकी कल्पना से अलग होना होता है। यदि मान वास्तव में वैकल्पिक है तो d.get("name") None देता है और d.get("name", 0) एक डिफ़ॉल्ट; पर अनिवार्य मान पर .get लगाने से त्रुटि की जगह एक None आपके कोड में बहता है और बहुत दूर जाकर फूटता है।
Q. इसे कैसे ठीक करें?
एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।
Q. यह कौन-सा औज़ार देता है?
python। यह Python में आता है, और संदेश 2 शब्दों का है।