प्रत्येक अनाम संख्या जो संदर्भ से तुरंत स्पष्ट नहीं है वह एक जादुई संख्या है। इसकी थोड़ी मूर्खतापूर्ण संख्या को परिभाषित करने के लिए जिसका अर्थ है कि संदर्भ से तुरंत स्पष्ट है।
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] +
भाग) नहीं है।