python - examples - मैं लूप के लिए एक अप्रयुक्त चर घोषित करने के आसपास कैसे हो सकता हूं?



python in hindi (4)

अगर मेरे पास सूची समझ है (उदाहरण के लिए) इस तरह:

['' for x in myList]

प्रभावी रूप से एक नई सूची बनाना जिसमें सूची में प्रत्येक तत्व के लिए खाली स्ट्रिंग है, मैं कभी भी x उपयोग नहीं करता। क्या यह लिखने का एक क्लीनर तरीका है इसलिए मुझे अप्रयुक्त x चर घोषित करने की आवश्यकता नहीं है?


जेनरेटर ऑब्जेक्ट्स वास्तव में चर का उपयोग नहीं करते हैं। तो कुछ पसंद है

list(('' for x in myList))

चाल करना चाहिए ध्यान दें कि जन जनरेटर समझ के बाहर एक चर के रूप में परिभाषित नहीं किया गया है।


नहीं। जेन इसे कहते हैं: नियमों को तोड़ने के लिए विशेष मामले पर्याप्त नहीं हैं। विशेष मामला लूप्स को चीजों की वस्तुओं का उपयोग नहीं कर रहा है और नियम यह है कि अनपॅक करने के लिए "लक्ष्य" है।

हालांकि, आप _ को वैरिएबल नाम के रूप में उपयोग कर सकते हैं, जिसे आम तौर पर "जानबूझकर अप्रयुक्त" के रूप में समझा जाता है (यहां तक ​​कि पिलिंट इत्यादि भी जानता है और इसका सम्मान करता है)।


यह पता चला है कि dummy* का उपयोग करना (प्रारंभ शब्द डमी है) क्योंकि परिवर्तनीय नाम _ के समान चाल करता है। _ एक ज्ञात मानक है और सार्थक परिवर्तनीय नामों का उपयोग करना बेहतर होगा। तो आप dummy , dummy , dummy1 उपयोग कर सकते हैं। इन परिवर्तनीय नामों का उपयोग करके PyLint शिकायत नहीं करेगा।


एक लूप में एक अप्रयुक्त चर घोषित करने के बारे में मैं कैसे टिप्पणी कर सकता हूं? (टिप्पणी के आकार से बाहर दौड़ें)

पाइथन बनाए गए ऑब्जेक्ट के लिए एक ही संदर्भ बनाए रखता है। (उत्परिवर्तन के बावजूद), उदाहरण के लिए,

In [1]: i = 1

In [2]: j = 1

In [3]: id(i)
Out[3]: 142671248

In [4]: id(j)
Out[4]: 142671248

आप, मैं और जे दोनों देख सकते हैं, उसी वस्तु को स्मृति में देखें। क्या होता है, जब हम एक अपरिवर्तनीय चर के मान को बदलते हैं।

In [5]: j = j+1

In [6]: id(i)
Out[6]: 142671248

In [7]: id(j)
Out[7]: 142671236

आप देख सकते हैं कि जे अब एक नया स्थान इंगित करना शुरू कर देता है, (जहां 2 संग्रहीत है), और मैं अभी भी उस स्थान को इंगित करता हूं जहां 1 संग्रहीत है। मूल्यांकन करते समय,

j = j+1

मूल्य 142671248 से लिया जाता है, गणना की जाती है (यदि पहले से ही कैश नहीं किया गया है), और 142671236 पर एक नए स्थान पर रखा गया है। जे को नए स्थान पर इंगित करने के लिए बनाया गया है। सरल शब्दों में हर बार एक नई प्रतिलिपि बनाई गई एक अपरिवर्तनीय चर संशोधित किया जाता है।

अस्थिरता

इस संबंध में परिवर्तनीय वस्तुएं थोड़ा अलग कार्य करती हैं। जब मूल्य द्वारा इंगित किया गया

In [16]: a = []

In [17]: b = a

In [18]: id(a)
Out[18]: 3071546412L

In [19]: id(b)
Out[19]: 3071546412L

एक और बी दोनों एक ही स्मृति स्थान पर इंगित करते हैं।

In [20]: a.append(5)

एक द्वारा इंगित स्मृति स्थान संशोधित है।

In [21]: a
Out[21]: [5]

In [22]: b
Out[22]: [5]

In [23]: id(a)
Out[23]: 3071546412L

In [24]: id(b)
Out[24]: 3071546412L

ए और बी दोनों, अभी भी एक ही स्मृति स्थान को इंगित करते हैं। दूसरे शब्दों में, परिवर्तनीय चर वैरिएबल द्वारा इंगित मूल्य की प्रतिलिपि बनाने की बजाय वैरिएबल द्वारा इंगित एक ही स्मृति स्थान का कार्य करते हैं, जैसे अपरिवर्तनीय परिवर्तनीय मामले में।





python