वहाँ एक अजगर है निर्मित डेटाप्रकार, अलावा None
, जिसके लिए:सबकुछ किसी से भी बड़ा नहीं है?
>>> not foo > None
True
जहां foo
उस प्रकार के एक मूल्य है? पाइथन 3 के बारे में कैसे?
वहाँ एक अजगर है निर्मित डेटाप्रकार, अलावा None
, जिसके लिए:सबकुछ किसी से भी बड़ा नहीं है?
>>> not foo > None
True
जहां foo
उस प्रकार के एक मूल्य है? पाइथन 3 के बारे में कैसे?
None
पाइथन 2 में किसी भी डेटाटाइप से हमेशा कम होता है (object.c
देखें)।
पायथन 3 में, यह बदला गया था; अब TypeError
में एक समझदार प्राकृतिक क्रम के परिणाम के बिना चीजों पर तुलना करना। से 3.0 "what's new" updates:
अजगर 3.0 आदेश देने तुलना के लिए नियमों को सरल बनाया गया है:
आदेश तुलना ऑपरेटरों (
<
,<=
,>=
,>
) एकTypeError
अपवाद ऑपरेंड की जरूरत नहीं है जब बढ़ा एक सार्थक प्राकृतिक आदेश। इस प्रकार, अभिव्यक्ति जैसे:1 < ''
,0 > None
याlen <= len
अब मान्य नहीं हैं, और उदा।None < None
False
लौटने के बजायTypeError
बढ़ाता है। एक अनुशासनिक यह है कि एक विषम सूची को सॉर्ट करना अब समझ में नहीं आता है - सभी तत्व एक दूसरे के साथ तुलनीय होना चाहिए। ध्यान दें कि यह==
और!=
ऑपरेटरों पर लागू नहीं होता है: विभिन्न अतुलनीय प्रकारों की वस्तुएं हमेशा एक-दूसरे के साथ असमान की तुलना करती हैं।
यह कुछ लोगों को परेशान है, क्योंकि यह प्रकार एक सूची है कि इसमें कुछ None
मूल्यों था तरह बातें करते हैं, और None
मूल्यों शुरुआत या अंत में एक समूह प्रदर्शित किया जाना भी अक्सर काम था। There was a thread on the mailing list about this थोड़ी देर पहले, लेकिन अंतिम बिंदु यह है कि पायथन 3 ऑर्डर करने के बारे में मनमाने ढंग से निर्णय लेने से बचने की कोशिश करता है (जो कि पाइथन 2 में बहुत कुछ हुआ)।
अजगर 2.7.5 स्रोत (object.c
) से:
static int
default_3way_compare(PyObject *v, PyObject *w)
{
...
/* None is smaller than anything */
if (v == Py_None)
return -1;
if (w == Py_None)
return 1;
...
}
संपादित: जोड़ा गया संस्करण संख्या।
यह पायथन 2.x के लिए है मुझे लगता है? – MatrixFrog
लिंक 2.6 –
है धन्यवाद, यह एक बहुत ही स्पष्ट उत्तर है! –
पायथन 3 की स्थिति को स्पष्ट करने के लिए धन्यवाद 3. मुझे "नया क्या है" पृष्ठ पढ़ना याद है लेकिन मुझे यह याद नहीं है। बहुत रोचक, लेकिन यह वास्तव में समझ में आता है ... –
बेशक, कोई भी आदेश देने के बारे में मनमाने ढंग से कुछ भी नहीं है, जब तक कि यह स्पष्ट रूप से परिभाषित किया गया हो। इस तरह की अनावश्यक असंगतता यही है कि पाइथन 3 गोद लेने में इतनी देर लग रही है। –
"अच्छी तरह परिभाषित" (व्यवहार की स्पष्ट, स्पष्ट परिभाषा) "मनमाने ढंग से" (विवेक के आधार पर बनाई गई पसंद) से अलग है। उदाहरण के लिए, कोई भी आसानी से कह सकता है "कोई भी सब कुछ से अधिक तुलना नहीं करता है"। यह समान रूप से अच्छी तरह से परिभाषित है, लेकिन अभी भी काफी मनमाना है। –