← Back to Python Course | Chapter 1: Basics | Lesson 14 of 14

Python Variable Names

Python में variable assign करना (x = 5) आसान है, लेकिन अक्षरों की हर string वैध variable name नहीं होती -- Python यह तय करता है कि किसी नाम में क्या हो सकता है और क्या नहीं।
Syntax
python
valid_name = value  # letters, digits, underscore; cannot start with a digit
_private_name = value

नामकरण के बुनियादी नियम

Python का वैध variable नाम किसी अक्षर (a-z, A-Z) या underscore (_) से शुरू होना चाहिए, और पहले के बाद हर character अक्षर, अंक या underscore हो सकता है -- नाम में कहीं भी space, hyphen या अन्य punctuation की अनुमति नहीं है।

Note: जब शक हो कि नाम वैध है या नहीं, तो यह सरल नियम याद रखिए: अक्षर या underscore से शुरू होना चाहिए, और उसके बाद केवल अक्षर/अंक/underscores।
Warning: स्पेस वाला (जैसे my var) या हाइफ़न वाला (जैसे my-var) variable name सिर्फ खराब style नहीं है -- यह असली SyntaxError है, क्योंकि Python इसे कई अलग-अलग tokens के रूप में parse करने की कोशिश करेगा।

उदाहरण: The Basic Naming Rules

python
_valid_name = 1  # starts with an underscore, which is allowed
name2 = 2  # letters followed by a digit, also allowed
print(_valid_name, name2)

नाम Reserved Keywords नहीं हो सकते

Python कुछ शब्द (जैसे if, else, for, while, class, def, return, और True/False/None) केवल भाषा की अपनी syntax के लिए आरक्षित रखती है -- इनमें से किसी को variable नाम बनाने की कोशिश SyntaxError देती है, क्योंकि Python नहीं बता सकती कि आपका मतलब keyword से है या variable से।

Note: अपने Python version के आरक्षित शब्दों की पूरी, वर्तमान सूची देखने के लिए keyword module (import keyword; print(keyword.kwlist)) इस्तेमाल कीजिए।
Warning: किसी keyword में underscore या number जोड़ना (जैसे class_ या class1) प्रतिबंध से बच निकलता है और technically legal है, हालाँकि यह असली keyword की उम्मीद करने वाले किसी व्यक्ति को उलझन में डाल सकता है।

उदाहरण: Names Cannot Be Reserved Keywords

python
import keyword
print(keyword.iskeyword("class"))  # True, "class" is reserved
class_ = "workaround"  # trailing underscore avoids clashing with the keyword
print(class_)

Case Sensitivity

Python बड़े और छोटे अक्षरों को पूरी तरह अलग मानती है, यानी age, Age और AGE तीन अलग, स्वतंत्र variables हैं जो एक ही समय में अलग-अलग value रख सकते हैं -- यह ब्योरा bugs से बचने और नामकरण परंपराओं का लगातार पालन करने, दोनों के लिए मायने रखता है।

Note: अपने variables के लिए एक ही casing परंपरा (जैसे underscores वाले सारे छोटे अक्षर) चुनिए और पूरे project में उसी पर टिके रहिए, ताकि case के गलत मेल से होने वाले bugs से बचा जा सके।
Warning: सिर्फ case में अलग टाइपो (असली variable total की जगह Total पढ़ना) चुपचाप गलत value पढ़ने के बजाय NameError देता है, लेकिन यह फिर भी ढूँढने में परेशान करने वाली bug है।

उदाहरण: Case Sensitivity

python
age = 25
Age = 30
AGE = 35  # age, Age, and AGE are three separate variables
print(age, Age, AGE)

Python नामकरण परंपराएँ (PEP 8)

सख्त वैधता के नियमों से आगे, Python की official style guide (PEP 8) विशिष्ट नामकरण परंपराएँ सुझाती है: variables और functions के लिए snake_case (underscores वाले छोटे अक्षर), constants के लिए UPPER_SNAKE_CASE, और class नामों के लिए PascalCase -- इनका पालन आपके code को व्यापक Python समुदाय के साथ तुरंत पहचानने योग्य और एकसमान बनाता है।

Note: डिफ़ॉल्ट रूप से variables और functions के लिए snake_case अपनाइए -- यह Python code में अब तक की सबसे आम परंपरा है और वही है जिसकी अधिकतर दूसरे developers उम्मीद करेंगे।
Warning: एक ही project में naming conventions को असंगत रूप से मिलाना (कुछ snake_case, कुछ camelCase) syntax error नहीं है, पर यह code को पढ़ने और maintain करने में काफी मुश्किल बना देता है।

उदाहरण: Python Naming Conventions (PEP 8)

python
user_count = 5         # snake_case
MAX_RETRIES = 3          # UPPER_SNAKE_CASE

class UserAccount:        # PascalCase
    pass

print(user_count, MAX_RETRIES)

बहु-शब्द नाम: पठनीयता मायने रखती है

जब कोई variable एक से ज़्यादा अवधारणाएँ दर्शाता है (जैसे किसी उपयोगकर्ता के order की कुल कीमत), तो शब्दों को underscores से जोड़ना (total_order_price) बजाय उन्हें सटाकर लिखने (totalorderprice) या अस्पष्ट संक्षेप (torpr) बनाने के, नाम को वैध भी रखता है और बाद में code पढ़ने वाले के लिए सचमुच पठनीय भी, भविष्य के आपके लिए भी।

Note: छोटे, गूढ़ संक्षिप्त रूप की जगह थोड़ा लंबा, साफ़ वर्णनात्मक नाम चुनिए -- अतिरिक्त typing का फ़ायदा उसी पल मिल जाता है जब किसी और को (या महीनों बाद आपको) code पढ़ना पड़ता है।
Warning: बहुत ज़्यादा छोटा किया गया नाम (जैसे customer_id की जगह custId) अभी कुछ keystrokes बचाता है, पर बाद में असली समय बर्बाद करता है जब किसी को यह अंदाज़ा लगाना पड़े कि इसका मतलब क्या है।

उदाहरण: Multi-Word Names: Readability Matters

python
total_order_price = 49.99  # clear
print(total_order_price)
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.