पायथन प्रोग्राम में एक पहचानकर्ता (identifier) इसमें विभिन्न तत्वों को दिया गया नाम है, जैसे कीवर्ड, वेरिएबल, फ़ंक्शन, क्लास, मॉड्यूल, पैकेज आदि।
पहचानकर्ता नियम
- शुरू होना चाहिए: वर्णमाला (लोअरकेस या अपरकेस) या अंडरस्कोर (`_`) से
- इसके बाद आ सकते हैं: एक या अधिक अल्फा-न्यूमेरिक वर्ण (a-z, A-Z, 0-9) या अंडरस्कोर
- केस-सेंसिटिव: `name`, `Name`, `NAME` अलग-अलग हैं
- कीवर्ड नहीं हो सकते: रिजर्व्ड कीवर्ड पहचानकर्ता के रूप में उपयोग नहीं किए जा सकते
- कोई विशेष वर्ण नहीं: `@`, `$`, `%`, `-`, स्पेस आदि अनुमत नहीं
नामकरण सम्मेलन (PEP 8)
| प्रकार | सम्मेलन | उदाहरण |
|---|---|---|
| क्लास | CapWords (पास्कलकेस) | MyClass, UserProfile |
| फ़ंक्शन/मेथड | snake_case | get_user, calculate_total |
| वेरिएबल | snake_case | user_name, max_count |
| कॉन्स्टेंट | UPPER_SNAKE_CASE | MAX_SIZE, DEFAULT_TIMEOUT |
| मॉड्यूल | lowercase, छोटा | utils, config, data_parser |
| पैकेज | lowercase, छोटा | myproject, mypackage |
| प्राइवेट (_prefix) | _single_underscore | _internal_var, _helper() |
| स्ट्रॉन्ग प्राइवेट (__prefix) | __double_underscore | __private_var (नाम मैंगलिंग) |
| डंडर/मैजिक (__both__) | __dunder__ | __init__, __str__, __add__ |
विशेष अंडरस्कोर पैटर्न
_var- कन्वेंशन द्वारा "आंतरिक उपयोग" (भाषा द्वारा लागू नहीं)__var- नाम मैंगलिंग: `_ClassName__var` बन जाता है (क्लास के अंदर)__var__- भाषा/इंटरप्रेटर के लिए आरक्षित (उदाहरण: `__init__`, `__len__`)_- थ्रोअवे वेरिएबल / अंतिम परिणाम (REPL में)
उदाहरण
# वैध पहचानकर्ता
name = "John"
user_name = "john_doe"
_user_count = 5
__private = "hidden"
MAX_SIZE = 100
calculate_total = lambda x, y: x + y
MyClass = type('MyClass', (), {})
# अवैध पहचानकर्ता
2name = "invalid" # संख्या से शुरू नहीं हो सकता
user-name = "invalid" # हाइफ़न नहीं
class = "invalid" # कीवर्ड
@email = "invalid" # विशेष वर्ण नहीं
# यूनिकोड पहचानकर्ता (पायथन 3) - वैध लेकिन अनुशंसित नहीं
नमस्ते = "hello"
用戶 = "user"
पहचानकर्ता मान्य करें
import keyword
def is_valid_identifier(name):
return (name.isidentifier() and not keyword.iskeyword(name))
print(is_valid_identifier("valid_name")) # True
print(is_valid_identifier("2invalid")) # False
print(is_valid_identifier("class")) # False (कीवर्ड)
print(is_valid_identifier("_private")) # True