इस पर एक नज़र डालें:ये दो कार्य अलग क्यों हैं?
>>> def f():
... return (2+3)*4
...
>>> dis(f)
2 0 LOAD_CONST 5 (20)
3 RETURN_VALUE
जाहिर है, संकलक पूर्व का मूल्यांकन किया गया है (2+3)*4
, जो समझ में आता है।
अब, अगर मैं बस *
की ऑपरेंड का क्रम बदल:
>>> def f():
... return 4*(2+3)
...
>>> dis(f)
2 0 LOAD_CONST 1 (4)
3 LOAD_CONST 4 (5)
6 BINARY_MULTIPLY
7 RETURN_VALUE
अभिव्यक्ति नहीं रह गया है पूरी तरह से पूर्व मूल्यांकन किया जाता है! इसका कारण क्या है? मैं सीपीथन 2.7.3 का उपयोग कर रहा हूँ।
मुझे पेफोल अनुकूलक में एक दोष की तरह दिखता है। आप बग ट्रैकर की जांच कर सकते हैं और देख सकते हैं कि यह एक ज्ञात समस्या है या नहीं। – user2357112
पुरानी पायथन 2.x का उपयोग करना बंद करें ... 3.3 (कम से कम) पर यह काम करता है जैसा कि इसे करना चाहिए। – JBernardo
@ जेबेर्नर्डो 2.x और 3.x बहुत अलग हैं; मैं उनके बीच सहजता से स्विच नहीं कर सकता। – arshajii