पायथन में डिवीजन का व्यवहार संस्करणों के बीच बदल गया है, जो एक सामान्य भ्रम का स्रोत है।
पायथन 2.x में व्यवहार
पायथन 2 में / ऑपरेटर आर्गुमेंट्स पर निर्भर करता था:
- दोनों इंटीजर हों तो फ्लोर डिवीजन (पूर्णांक परिणाम)।
- कोई एक फ्लोट हो तो ट्रू डिवीजन (फ्लोट परिणाम)।
>>> # Python 2.7
>>> 20 / 7
2
>>> 20.0 / 7
2.857142857142857
समस्या: तापमान रूपांतरण
>>> 18 * 9 / 5 + 32
64 # गलत! पूर्णांक डिवीजन
>>> 18.0 * 9 / 5 + 32
64.4 # सही
>>> 18 == 18.0
True
समान संख्यात्मक मान लेकिन अलग परिणाम!
समाधान: // ऑपरेटर (पायथन 2.2+)
स्पष्ट फ्लोर डिवीजन के लिए // पेश किया गया:
>>> 9 // 2
4
>>> -9 // 2
-5
>>> 9.0 // 2
4.0
>>> -9.0 // 2
-5.0
पायथन 3.x में व्यवहार (वर्तमान मानक)
पायथन 3 ने इस असंगति को ठीक किया:
/हमेशा ट्रू डिवीजन करता है (फ्लोट परिणाम)।//हमेशा फ्लोर डिवीजन करता है।
>>> # Python 3.x
>>> 18 * 9 / 5 + 32
64.4
>>> 18.0 * 9 / 5 + 32
64.4
>>> 9 / 2
4.5
>>> -9 / 2
-4.5
>>> 9 // 2
4
>>> -9 // 2
-5
सारांश तालिका
| ऑपरेटर | पायथन 2 (दोनों int) | पायथन 3 |
|---|---|---|
/ | फ्लोर डिवीजन (int) | ट्रू डिवीजन (float) |
// | फ्लोर डिवीजन (int) | फ्लोर डिवीजन (int/float) |
सर्वोत्तम अभ्यास
- पायथन 3 में
/फ्लोट डिवीजन के लिए,//इंटीजर डिवीजन के लिए उपयोग करें। - पायथन 2 कोडबेस में
from __future__ import divisionजोड़कर पायथन 3 व्यवहार प्राप्त करें। - स्पष्टता के लिए टाइप कन्वर्जन (
float(x)) का उपयोग करने पर विचार करें।