2014-04-15 12 views
193

मेरे पास एक तरीका है जो कभी-कभी कोई भी टाइप टाइप नहीं देता है। तो मैं एक वैरिएबल से सवाल कैसे कर सकता हूं जो कोई नहीं है? मैं, उपयोग करने के लिए अगर विधि उदाहरणकोई भी "परीक्षण" कैसे करें Python में टाइप टाइप करें?

if not new: 
    new = '#' 

के लिए मुझे पता है कि गलत तरीके से है और मुझे आशा है कि आप समझते हैं कि मैं क्या मतलब है की जरूरत है।

+0

मुझे लगता है कि इसका उत्तर दिया गया था [यहां] (http://stackoverflow.com/questions/14247373/python-none-comparison-should-i-use-is-or) और स्पष्ट रूप से कहीं – yorodm

+0

से पहले यदि कोई नहीं है आपकी विधि का एकमात्र मूल्य जिसके लिए 'बूल (रिटर्न वैल्यू) '' गलत' बराबर है, फिर 'यदि नया नहीं है:' ठीक काम करना चाहिए। यह कभी-कभी अंतर्निर्मित libs में होता है - उदाहरण के लिए, ['re.match'] (https://docs.python.org/2/library/re.html#re.match) या तो कोई नहीं या एक सच्चा मैच वस्तु। – Kevin

उत्तर

302

तो मैं एक वैरिएबल पर सवाल कैसे कर सकता हूं जो कोई नहीं है?

उपयोग is ऑपरेटर, इस

if variable is None: 

क्यों इस काम करता है की तरह?

के बाद से None अजगर में NoneType के एकमात्र सिंगलटन वस्तु है, हम यदि किसी वैरिएबल उस में None या नहीं की जाँच करने के is ऑपरेटर का उपयोग कर सकते हैं।

is docs से हवाला देते हुए,

ऑपरेटरों is और वस्तु पहचान के लिए is not परीक्षण: x is y सच है यदि और केवल यदि x और y एक ही वस्तु है। x is not y उलटा सच्चाई मूल्य उत्पन्न करता है।

चूंकि None उसमें केवल एक ही हो सकता है, isNone जाँच करने के लिए पसंदीदा तरीका होगा।


तरह None हमेशा is या is not से किया जाना चाहिए एकमात्र करने के लिए घोड़े के मुंह

Python's Coding Style Guidelines - PEP-008 का हवाला देते हुए (संयुक्त रूप से खुद को गुइडो द्वारा परिभाषित) से यह सुना,

तुलना , समानता ऑपरेटरों कभी नहीं।

+0

बस 'z = variable का उपयोग करना कोई नहीं है' अगर आपको कथन के लिए सशर्त की आवश्यकता नहीं है तो काम करता है। –

38
if variable is None: 
    print 'Is None' 

-

if variable is not None: 
    print 'Isn\'t None' 
4

यह भी प्रति Alex Hall's answer रूप isinstance साथ किया जा सकता:

>>> NoneType = type(None) 
>>> x = None 
>>> type(x) == NoneType 
True 
>>> isinstance(x, NoneType) 
True 

isinstance भी सहज है लेकिन वहाँ जटिलता है कि यह लाइन की आवश्यकता है

NoneType = type(None)

जो int और float जैसे प्रकारों के लिए आवश्यक नहीं है।

संबंधित मुद्दे