2009-11-05 33 views
26

क्या list.append झूठ का मूल्यांकन करने का कोई कारण है? या क्या यह खेलने में सफल होने पर 0 लौटने का सी सम्मेलन है?list.append का मूल्यांकन क्यों गलत है?

>>> u = [] 
>>> not u.append(6) 
True 
+0

एक संभवतः बेहतर तरीका:

यहाँ बातें स्पष्ट करने के लिए कुछ न कुछ है * क्यों अजगर 'Builder' पैटर्न का उपयोग नहीं करता .. तो हम क्या कर सकते हैं' u.append (6)। संलग्न (7)। ..' * यह कष्टप्रद है। – javadba

उत्तर

35

अधिकांश पायथन तरीकों कि एक कंटेनर में जगह वापसी None उत्परिवर्तित - Command-query separation के सिद्धांत का एक आवेदन पत्र। (पाइथन हमेशा चीजों के बारे में व्यावहारिक रूप से व्यावहारिक है, इसलिए कुछ म्यूटेटर इसे प्राप्त करने पर एक उपयोगी मूल्य वापस कर देते हैं अन्यथा महंगा या गड़बड़ होगा - pop विधि इस व्यवहारवाद का एक अच्छा उदाहरण है - लेकिन वे निश्चित रूप से अपवाद हैं, न कि नियम, और append अपवाद बनाने का कोई कारण नहीं है)।

+0

लिखने के दौरान एक पूरी तरह से अलग अर्थ है (y.append (5) और (उपज y) लिखते समय मैंने इस मुद्दे पर टक्कर लगी है) जहां मैंने नहीं किया एक सफल सूची वृद्धि (परोक्ष रूप से) झूठी मूल्यांकन का अनुमान है। – diciu

18

NoneFalse करने के लिए और एक समारोह वापस नहीं करता है कि कुछ भी None वापस आ गए माना जाता है अजगर में मूल्यांकन करता है।

यदि आप टाइप करें:

>> print u.append(6) 
None 

Tadaaam :)

+6

उत्परिवर्ती (जैसे संलग्न, विस्तार, क्रम, इत्यादि) जो एक सूची अद्यतन करते हैं, कोई मान वापस नहीं करते हैं। –

+0

'कोई नहीं '*' गलत' का मूल्यांकन नहीं करता है। – SwiftsNamesake

+0

@SwiftsNamesake 'बूल (कोई नहीं)' –

5

यह यथा-स्थान सूची संशोधित करता है और None देता है। None झूठे का मूल्यांकन करता है।

4

क्योंकि .append विधि None देता है, इसलिए not NoneTrue का मूल्यांकन करता है। त्रुटि पर पायथन आमतौर पर एक त्रुटि को जन्म देती है:

>>> a =() 
>>> a.append(5) 
Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    a.append(5) 
AttributeError: 'tuple' object has no attribute 'append' 
3

वास्तव में, यह रिटर्न None

 

>>> print u.append(6) 
None 
>>> print not None 
True 
>>> 
 
0

list.append समारोह रिटर्न None करता है, यह सिर्फ सूची आपको लगता है कि विधि कॉल करने के प्रयोग कर रहे हैं करने के लिए मूल्य जोड़ने। वाक्यांश के लिए

>>> u = [] 
>>> not u 
False 
>>> print(u.append(6)) # u.append(6) == None 
None  
>>> not u.append(6) # not None == True 
True 
संबंधित मुद्दे