2016-03-20 18 views
1

NedenNeden yeniden eşleşmiyor ("c", "cat") doğrudur?

not re.match("c", "cat") 

dönüş Yanlış, ama

re.match("c", "cat") 

Doğru döndürmez ancak bunun yerine bellekte nesnenin konumunu döndürür. Bu ifade doğrudur dönüş yapmak için bir yol bulamıyorum, ama doğru olduğunu biliyorum çünkü:

if re.match("c", "cat"): 
    print "Yes!" 

döner "Evet!".

Söylediğim gibi, bu hiç de pratik bir öneme sahip değil, en azından şu anda değil, ama beni şaşırtıyor.

+1

* Bu ifadenin doğru olması için bir yol bulamıyorum * - sadece açıkça "bool": bool (re.match ("c", "cat")) 'a dönüştürebilirsiniz. – GingerPlusPlus

+3

https://docs.python.org/2/library/stdtypes.html#truth-value-testing konusuna bakın - Python'daki her şey bir Boole bağlamında değerlendirilebilir ('if',' not' vb. Kullanılarak).Maç bir sonuç (doğruluk) ya da “Hiçbiri” (falsi) döndürecektir. – jonrsharpe

cevap

2

kullanın bool() bir boolean değeri (true/false) dönüştürmek: Eğer if açıklamada re.match("c", "cat") kullandığınızda

bool(re.match("c", "cat")) == true 

, otomatik olarak bir boolean değeri, true dönüştürülür, işte bu yüzden o olacak olan not otomatik bir boolean değerine dönüştürür Kullanımı returnYes!

ardından nedenle onu çevirin:

not re.match("c", "cat") == false 
1

Eh, bu konuda odak: dediğin gibi

not re.match("c", "cat") 

İşte re.match("c", "cat"), "bellekte nesnenin konumunu" döndürecektir. Bu yanlış olmayan bir şey. Yani şimdi

, not re.match("c", "cat") sonuçlanacaktır içinde: Yanlış değil

için sonuçları

: Elbette

Yanlış

, bu tür Düşünme mantıksal koşullara uygulanabilir Ayrıca, bir if ifadesinin bir koşulu gibi.

+0

@Obicere, Sorumu güncelledim, şimdi sorun yok mu? :) – gsamaras

+1

Tüm olumsuzluklar tarafından bambular aldım, ikinci bakışta doğruydu. – Obicere

3

re.match() işlevi, eşleşme varsa match object değerini döndürür veya yoksa None döndürür. kesinlikle gerekli olmadığını Python,

if re.match(...) is not None: 

Ancak:

kendinizin kullanabileceği bir bool oluşturmak için örneğin bir göz atın Python'un "doğruluk" ve "felç" değerleri hakkında daha fazla bilgi için this thread.

İlgili konular