प्रत्येक अनाम संख्या जो संदर्भ से तुरंत स्पष्ट नहीं है वह एक जादुई संख्या है। इसकी थोड़ी मूर्खतापूर्ण संख्या को परिभाषित करने के लिए जिसका अर्थ है कि संदर्भ से तुरंत स्पष्ट है।
Django (अजगर वेब फ्रेमवर्क) में, मैं कुछ डेटाबेस फ़ील्ड को कच्ची संख्या के साथ परिभाषित कर सकता हूं जैसे:
firstname = models.CharField(max_length=40)
middlename = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)
जो स्पष्ट (और अनुशंसित अभ्यास ) है
MAX_LENGTH_NAME = 40
...
firstname = models.CharField(max_length=MAX_LENGTH_NAME)
middlename = models.CharField(max_length=MAX_LENGTH_NAME)
lastname = models.CharField(max_length=MAX_LENGTH_NAME)
जैसा कि मुझे कभी भी लंबाई बदलने की आवश्यकता नहीं है (और हमेशा max_lengthक्षेत्र की तुलना कर सकते हैं )। यदि मुझे शुरू में आवेदन की तैनाती के बाद क्षेत्र की लंबाई बदलने की आवश्यकता है, तो मुझे इसे अपने django कोड में प्रति फ़ील्ड बिल्कुल एक स्थान पर बदलने की आवश्यकता है, और फिर इसके अलावा DB के स्कीमा को बदलने के लिए माइग्रेशन लिखें। यदि मुझे कभी max_lengthकिसी प्रकार के ऑब्जेक्ट के परिभाषित क्षेत्र का संदर्भ देने की आवश्यकता है , तो मैं इसे सीधे कर सकता हूं - यदि वे फ़ील्ड एक Personवर्ग को परिभाषित कर रहे हैं, तो मैं इसे Person._meta.get_field('firstname').max_lengthप्राप्त करने के लिए उपयोग कर सकता हूंmax_lengthउपयोग किया जा रहा है (जो एक स्थान पर परिभाषित है)। तथ्य यह है कि एक ही 40 का उपयोग कई क्षेत्रों के लिए किया गया था, अप्रासंगिक है क्योंकि मैं उन्हें स्वतंत्र रूप से बदलना चाहता हूं। Firstname की लंबाई कभी भी middlename या lastname की लंबाई पर निर्भर नहीं होनी चाहिए; वे अलग-अलग मूल्य हैं और स्वतंत्र रूप से बदल सकते हैं।
अक्सर सरणी सूचकांक अनाम संख्याओं का उपयोग कर सकते हैं; जैसे अगर मेरे पास एक डेटा की CSV फाइल है, जिसे मैं एक अजगर शब्दकोश में रखना चाहता हूं, तो पंक्ति में पहला तत्व, जिस शब्दकोश में keyमैं लिखूंगा:
mydict = {}
for row in csv.reader(f):
mydict[row[0]] = row[1:]
यकीन है कि मैं नाम index_column = 0और कुछ कर सकता है जैसे:
index_col = 0
mydict = {}
for row in csv.reader(f):
mydict[row[index_col]] = row[:index_col] + row[index_col+1:]
या इससे after_index_col = index_col + 1छुटकारा पाने के लिए बदतर परिभाषित करते हैं index_col+1, लेकिन यह मेरे विचार में कोड को स्पष्ट नहीं करता है। इसके अलावा, अगर मैं index_colएक नाम देता हूं, तो मैं बेहतर काम करता हूं कोड भले ही कॉलम 0 (इसलिए row[:index_col] +भाग) नहीं है।