2010-03-10 15 views
62

बहुत बुनियादी सवाल - पायथन में जनरेटर से एक मूल्य कैसे प्राप्त करें?पायथन में जनरेटर से एक मूल्य कैसे प्राप्त करें?

अब तक मुझे पता चला है कि मैं gen.next() लिखकर एक प्राप्त कर सकता हूं। मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि यह सही तरीका है?

उत्तर

82

हाँ, या 2.6+ में next(gen)

39

पायथन < = 2.5 में, gen.next() का उपयोग करें। यह सभी पायथन 2.x संस्करणों के लिए काम करेगा, लेकिन पायथन 3.x

पायथन> = 2.6 में, next(gen) का उपयोग करें। यह एक अंतर्निहित कार्य है, और स्पष्ट है। यह पायथन 3 में भी काम करेगा।

इनमें से दोनों एक विशेष नामित फ़ंक्शन, next() पर कॉल कर रहे हैं, जिसे सबक्लासिंग द्वारा ओवरराइड किया जा सकता है। हालांकि, पाइथन 3 में, अन्य कार्यों के साथ संगत होने के लिए, इस फ़ंक्शन का नाम बदलकर __next__() कर दिया गया है।

1

पायथन 3 में आपके पास gen.next() नहीं है, लेकिन आप अभी भी अगले (जीन) का उपयोग कर सकते हैं। यदि आप मुझसे पूछें तो थोड़ा विचित्र है लेकिन ऐसा ही है।

2

उपयोग करें (अजगर 3 के लिए)

next(generator) 

यहाँ एक उदाहरण

def fun(x): 
    n = 0 
    while n < x: 
     yield n 
     n += 1 
z = fun(10) 
next(z) 
next(z) 

0 
1 
प्रिंट चाहिए
संबंधित मुद्दे