के लिए इसका उपयोग नहीं करना चाहिए, बस पाइथन जेनरेटर को देखकर, उनके साथ वास्तविक प्रभाव, लेकिन क्या कोई चीज उनको उपयोग नहीं कर रही है? मैं पिछले सी कोडिंग के बारे में सोच रहा था जहां फ़ाइल से पढ़ना, या उपयोगकर्ता क्रियाएं क्षेत्र होंगी। उदाहरण के लिए, जनरेटर को उपयोगकर्ता को इनपुट (बेस डेटा एंट्री?) और इनपुट कॉलिंग फ़ंक्शन प्रक्रिया के लिए संकेत देने के लिए उपयोग किया जा सकता है? क्या कोई प्रदर्शन या सफाई समस्याएं चिंतित हैं?पायथन जेनरेटर -
उत्तर
एक जनरेटर के साथ समस्या यह है कि वे मिलता है "का सेवन किया।" इसका अर्थ यह है कि यदि आपको अनुक्रम पर पुन: पुन: प्रयास करने की आवश्यकता है, तो आपको जनरेटर को दोबारा बनाने की आवश्यकता है।
यदि आलसी मूल्यांकन एक मुद्दा है, तो आप शायद जनरेटर अभिव्यक्ति नहीं चाहते हैं। उदाहरण के लिए, यदि आप अपनी सभी गणनाओं को सामने करना चाहते हैं (उदा। ताकि आप संसाधन जारी कर सकें), तो एक सूची समझ या लूप के लिए शायद सबसे अच्छा है।
यदि आप psyco का उपयोग करते हैं, तो आपको सूची अभिव्यक्तियों और लूप के लिए महत्वपूर्ण गति वृद्धि मिलेगी, लेकिन जेनरेटर के लिए नहीं।
इसके अलावा, अगर आपको अपने अनुक्रम की लंबाई आगे बढ़ने की आवश्यकता है, तो आप जनरेटर नहीं चाहते हैं।
जनरेटर अच्छी तरह से जारी नहीं रहते हैं।
आम तौर पर, आपको जनरेटर ऑब्जेक्ट को जारी रखने का प्रयास करने में त्रुटि होती है।
>>> def generatorForEvenKeys(aDictionary):
for k in aDictionary:
if k % 2 == 0: yield aDictionary[k]
>>> x = generatorForEvenKeys(someDictionary)
>>> pickle.dump(x,file('temp.dat','wb'))
आपको निम्न त्रुटि हो जाता है:
TypeError: can't pickle generator objects
आप एक जनरेटर का उपयोग करके ऐसी जब आप की जरूरत है (क्यों xrange
पायथन 2.x में range
और कम की तुलना में बहुत लंबे समय तक दृश्यों का समर्थन करता है यह है) कुछ, iterateable हो स्मृति में पूरी सूची पकड़े बिना के लिए
चाहते मेमोरी में पूरी तरह से "उपज करने के लिए सामान की सूची" लोड करने के लिए, जेनरेटर का उपयोग करने में बहुत कुछ नहीं है - आप एक सूची भी वापस कर सकते हैं।
एक (थोड़ा काल्पनिक) उदाहरण के लिए:
def my_pointless_generator(x):
thedata = range(x) # or thedata = list(range(x)) in Python 3.x
for x in thedata:
yield x
बस के रूप में कुशलतापूर्वक के रूप में लिखा जा ..can ..
def my_pointless_generator(x):
return range(x)
- 1. पायथन रिवर्स जेनरेटर
- 2. पायथन कोड जेनरेटर
- 3. पायथन 3: जेनरेटर
- 4. पायथन पार्सर जेनरेटर पर सलाह
- 5. पायथन: जेनरेटर ऑब्जेक्ट पर गुण
- 6. रुबी जेनरेटर बनाम पायथन जनरेटर
- 7. जेनरेटर
- 8. पायथन में दो जेनरेटर कैसे शामिल हों?
- 9. जेनरेटर
- 10. जावा - जेपीए - जेनरेटर - @ सिकेंस जेनरेटर
- 11. "टैग क्लाउड" जेनरेटर?
- 12. पाइथन जेनरेटर
- 13. पाइथन जेनरेटर
- 14. जेनरेटर (पायथन में) से केवल एक आइटम कैसे चुनें?
- 15. मैं नेस्टेड पायथन जेनरेटर फ़ंक्शन से परिणाम कैसे प्राप्त करूं?
- 16. पायथन सी एपीआई के साथ जेनरेटर/इटरेटर कैसे बनाएं?
- 17. पायथन में नेस्टेड जेनरेटर अभिव्यक्ति का उपयोग 2.7
- 18. ADO.NET DbContext जेनरेटर बनाम ADO.NET पॉको एंटिटी जेनरेटर (ऑब्जेक्ट कॉन्टेक्स्ट)
- 19. जेनरेटर थ्रेडसेफ हैं?
- 20. जावा बिल्डर जेनरेटर समस्या
- 21. सीएसएस से पीएनजी जेनरेटर
- 22. जावास्क्रिप्ट पार्सर जेनरेटर
- 23. क्रैपी रैंडम नंबर जेनरेटर
- 24. सी #/.NET लेक्सर जेनरेटर
- 25. संभाव्यता यादृच्छिक संख्या जेनरेटर
- 26. हाइबरनेट आईडी जेनरेटर
- 27. एक्सएसडी कोड जेनरेटर
- 28. यादृच्छिक फ़ाइल जेनरेटर (दोबारा!)
- 29. Django पासवर्ड जेनरेटर
- 30. PHP MIDI जेनरेटर
+1 अच्छा पता करने के लिए – ebo
आपको एक उदाहरण दे सकते हैं? – bayer
बेयर: निम्नानुसार उदाहरण: मैं एक टेक्स्ट दस्तावेज़ और पुन: शब्दों को वापस कर रहा हूं। मैं जनरेटर को चुनना चाहता हूं ताकि मैं टेक्स्ट दस्तावेज़ को ठीक से कहां पढ़ूं जहां से मैंने छोड़ा था। ऊप्स! नहीं कर सकते। क्या एक पिटा है। –