2014-04-15 19 views
193

Bazen bir NoneType değeri döndüren bir yöntem var. Peki, bir NoneType olan bir değişkeni nasıl sorgulayabilirim? Ben o yanlış bir yol olduğunu biliyorum ve ne anlama geldiğini anlamak umut örnek"Sınama" nasıl yazılır?

if not new: 
    new = '#' 

için, yöntem eğer kullanmak gerekir.

+0

Bu sorunun cevabını [burada] (http://stackoverflow.com/questions/14247373/python-none-comparison-s-hould-i-use-is-or) ve görünüşe göre – yorodm

+0

'dan önce bir yerde "Yok" ise metodunuzun hangi 'bool (returnValue)' 'False '' ye karşılık geldiğini döndürdüğü tek değer, daha sonra 'eğer yeni değilse:' 'iyi çalışmalıdır. Bu bazen yerleşik lib'lerde olur - örneğin, ['re.match'] (https://docs.python.org/2/library/re.html#re.match) ya Hiçbiri ya da gerçek bir eşleşme döndürür nesne. – Kevin

cevap

302

Nasıl bir NoneType olan bir değişkeni sorgulayabilirim?

Kullanım is operatör bu işleri neden bu

if variable is None: 

gibi? None Python NoneType tek tek nesnedir yana

, bir değişken içinde None ya da değil olup olmadığını kontrol etmek için is operatörünü kullanabilirsiniz. is docs gelen teklif

,

operatör is ve nesne kimliğinin is not testi: ve ancak x ve y aynı nesne ise x is y geçerlidir. x is not y, ters doğru değerini verir. None yalnızca bir örneği olabilir yana

, isNone kontrol etmek için tercih edilen bir yolu olurdu.


None hep is veya is not ile yapılmalıdır gibi tekiz, (ortaklaşa Guido kendisi tarafından tanımlanır) Python's Coding Style Guidelines - PEP-008 aktaran at ağzına

den

Karşılaştırmalar duyun hiçbir zaman eşitlik operatörleri.

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

isinstance da sezgisel ancak çizginin gerektirir komplikasyon vardır: -

+0

Sadece koşullu bir if ifadesine ihtiyacınız yoksa 'z = değişkeni Yok'dur. –

38
if variable is None: 
    print 'Is None' 

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