मैं हाल ही में पाइथन जेनरेटर के साथ प्रयोग कर रहा हूं, और मैं निम्नलिखित उत्सुक व्यवहार में आया हूं, और मुझे यह समझने में उत्सुकता है कि ऐसा क्यों होता है और क्या हो रहा है:पायथन - उत्सुक/अप्रत्याशित व्यवहार - ऑपरेटरों की प्राथमिकता
def generating_test(n):
for a in range(n):
yield "a squared is %s" % a*a # Notice instead of a**2 we have written a*a
for asquare in generating_test(3):
print asquare
आउटपुट:
a squared is 1
a squared is 2a squared is 2
निम्न स्क्रिप्ट जो अपेक्षित आउटपुट उत्पन्न बनाम:
def generating_test(n):
for a in range(n):
yield "a squared is %s" % a**2 # we use the correct a**2 here
for asquare in generating_test(3):
print asquare
आउटपुट:
a squared is 0
a squared is 1
a squared is 4
एक तरफ: यदि आप वास्तव में एक पूर्णांक स्वरूपित कर रहे हैं, तो '% d' का उपयोग करें,'% s' नहीं। – kojiro
या नए 'प्रारूप' वाक्यविन्यास को गले लगाओ। मैंने सोचा कि यह थोड़ा लंबा था जब मैंने इसे पहली बार देखा लेकिन मुझे यह पसंद आया। – DSM
एक सहकर्मी ने मुझे एक बार बताया, * हमेशा * '%' – chepner