Home › Hindi › NameError Hindi में

Python NameError Hindi में — "name 'x' is not defined" का पूरा मतलब

🌐 यह page Hindi में है · Read this in English →

Exact message: NameError: name 'x' is not defined5 कारण + fixFree practice included

एक line में जवाब

NameError का मतलब है: आपने जो नाम (variable या function) use किया, वह Python को उस वक्त तक कहीं मिला ही नहीं। Python guess नहीं करता — जो नाम बना ही नहीं, वह use नहीं हो सकता। इसलिए fix हमेशा दो में से एक होता है: या तो spelling ठीक करो, या नाम को use करने से पहले बनाओ।

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    print(nam)
NameError: name 'nam' is not defined. Did you mean: 'naam'?

Traceback हमेशा नीचे से ऊपर पढ़ो। आखिरी line बताती है कि कौन सा नाम गायब है (यहाँ 'nam'), उससे ऊपर वाली line बताती है कि galti किस line पर हुई (यहाँ line 2)। Python 3.10+ तो "Did you mean" लिखकर सही नाम भी suggest कर देता है — वह suggestion सबसे पहले पढ़ो, 70% बार वही जवाब होता है।

कारण 1 — Spelling या case की galti (सबसे common)

Python के लिए naam, Naam और NAAM तीन अलग-अलग variables हैं। एक letter का फर्क भी NameError बन जाता है।

naam = "Rahul"
print(nam)      # ❌ NameError: name 'nam' is not defined
print(Naam)     # ❌ NameError — capital N वाला variable बना ही नहीं
print(naam)     # ✅ Rahul

Fix करने का तरीका: error message में quotes के अंदर जो नाम है उसे copy करो, फिर file में Ctrl+F से search करो। अगर वह नाम सिर्फ एक ही जगह (उसी crash वाली line पर) मिलता है, तो पक्का typo है।

कारण 2 — Variable बनने से पहले use कर दिया

Python file को ऊपर से नीचे, line-by-line चलाता है। ऊपर वाली line को नीचे वाली line का पता नहीं होता।

print(total)    # ❌ NameError — total अभी बना ही नहीं
total = 100

Fix: assignment को use से ऊपर ले जाओ। यही बात if के अंदर बने variables पर भी लागू है — अगर if false हुआ तो variable बना ही नहीं, और बाहर use करने पर NameError:

marks = 30
if marks >= 40:
    result = "Pass"
print(result)   # ❌ marks 30 है, इसलिए result कभी बना ही नहीं

# ✅ Fix: पहले एक default value दे दो
result = "Fail"
if marks >= 40:
    result = "Pass"
print(result)   # Fail

कारण 3 — String के quotes लगाना भूल गए

यह beginners की सबसे छुपी हुई galti है। बिना quotes के Python उसे variable समझता है, text नहीं।

print(Hello)      # ❌ NameError: name 'Hello' is not defined
print("Hello")    # ✅ Hello

अगर error उस नाम का आ रहा है जो आपको text समझ आ रहा था — जैसे NameError: name 'Monday' is not defined — तो 99% बार quotes ही छूटे हैं।

कारण 4 — Function define करने से पहले call कर दिया

Function का नाम भी एक name ही है। def वाली line चलने से पहले वह नाम exist नहीं करता।

greet()          # ❌ NameError: name 'greet' is not defined

def greet():
    print("Namaste")

Fix: सारी def definitions ऊपर रखो, चलाने वाला code सबसे नीचे। यही reason है कि अच्छे Python programs में सबसे नीचे main() call दिखता है।

कारण 5 — Import भूल गए, या function दूसरे scope में है

sqrt(16) लिखने पर NameError आएगा अगर from math import sqrt नहीं लिखा। इसी तरह function के अंदर बना variable बाहर मौजूद नहीं होता:

def calculate():
    answer = 42        # यह सिर्फ function के अंदर ज़िंदा है

calculate()
print(answer)          # ❌ NameError: name 'answer' is not defined

# ✅ Fix: value को return करो
def calculate():
    return 42

answer = calculate()
print(answer)          # 42

याद रखो: function के अंदर की चीज़ें बाहर नहीं दिखतीं — बाहर चाहिए तो return करो। यही Python का scope rule है।

NameError vs UnboundLocalError — फर्क क्या है?

दोनों "variable नहीं मिला" वाले errors हैं, पर कारण अलग है। NameError = नाम कहीं है ही नहीं। UnboundLocalError = नाम function के अंदर assign हो रहा है, इसलिए Python उसे local मानता है, पर assign होने से पहले पढ़ लिया गया।

count = 0

def add():
    count = count + 1   # ❌ UnboundLocalError

# ✅ Fix: बाहर वाले को बदलना है तो साफ-साफ बोलो
def add():
    global count
    count = count + 1

असल projects में global से बचो — बेहतर है value को argument में लो और result return करो।

🛠️ Practice करो (free, browser में)

पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।

सारे free problems देखो →

अक्सर पूछे जाने वाले सवाल

Python में NameError का मतलब क्या होता है?

NameError का मतलब है कि आपने कोई variable या function इस्तेमाल किया जो Python की memory में मौजूद नहीं है — या तो उसकी spelling गलत है, या वह नाम अभी बना ही नहीं है, या वह किसी दूसरे scope (function के अंदर) में है।

NameError कैसे fix करें?

error message में quotes के अंदर लिखा नाम copy करें और file में search करें। अगर वह नाम कहीं और नहीं मिलता तो spelling ठीक करें; अगर मिलता है पर नीचे की line में बना है तो उस line को ऊपर ले जाएँ। Python 3.10+ में 'Did you mean' suggestion सबसे तेज़ जवाब देता है।

NameError और SyntaxError में क्या फर्क है?

SyntaxError code चलने से पहले आता है — Python आपकी line पढ़ ही नहीं पाया (colon, bracket या quote गायब)। NameError code चलते समय आता है — line सही लिखी है, पर उसमें इस्तेमाल हुआ नाम मौजूद नहीं है।

print(Hello) पर NameError क्यों आता है?

क्योंकि quotes के बिना Hello एक variable का नाम माना जाता है, text नहीं। text print करना है तो print("Hello") लिखें।

आगे पढ़ो