SORU
4 Mayıs 2010, Salı


False == 0 ve True == 1 Uygulama Python ya da dil tarafından garanti edilir?

False == 0 Python True == 1, Bunun garantisi var mı? Örneğin, aşağıdaki kod, her zaman Python sürümü (ve, muhtemelen, gelecek olanlar mevcut) ne olursa olsun aynı sonucu verir, herhangi bir şekilde garanti mi?

0 == False  # True
1 == True   # True
['zero', 'one'][False]  # is 'zero'

Resmi belgelerine herhangi bir referans çok mutluluk duyacağız!

EditÇok cevaplar belirtildiği, bool int devralır. Soru bu nedenle olarak değişiklik olabilir: "bu belgeleri resmi olarak programcılar değerleri Boolean değerleri tamsayılar devralmasını güvenmeyin, derim ki 0 ve 8**?". Bu soru uygulama ayrıntıları nedeniyle başarısız olmaz sağlam kod yazma için geçerlidir!

CEVAP
4 Mayıs 2010, Salı


Python 2'de.x budeğilTrue False tayin olmak için mümkün olduğu kadar garantili. Eğer bu durumda bile, ancak boolean True ve False hala düzgün karşılaştırmaları için döndürülür.

Python 3'te.x True False anahtar kelimeler ve her zaman 1 0 eşit olacaktır.

Normal şartlar altında 2 ve 3'te her zaman Python Python:

15* *nesne türü int sınıfı: bool

object
   |
 int
   |
 bool

Neden örnek çalışır tek nedeni budur. Dizin listesi sadece tamsayı veya __index__ bir yöntem (teşekkürler mark-dickinson) tanımlayan nesneleri ile çalışır çünkü tam sayı bir alt sınıf olan bir nesne ile işe yarar.

Düzenleme:

Python 3 Bu güncel python sürümü, ve doğrudur. docs for python 2.6 docs for Python 3 de derim:

Tamsayılar iki türü vardır: [...] Tamsayı (int) [...] Mantıksal (bool)

ve boolean fıkra:

Boolean değerleri: Bu temsil gerçek değerleri Yanlış ve Doğru [...] Boolean değerleri gibi davranır, değerleri 0 ve 1, sırasıyla, neredeyse bütün bağlamlarda, istisna olmaktan o zaman dönüştürülmüş bir dize, dizeleri, "False" veya "True" geri döndü, sırasıyla.

Boolean değerleri açıkça Python 2.6 ve 3 tamsayı olarak kabul edilir.

Python 4 gelene kadar güvendesin. ;-)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • macpulenta

    macpulenta

    9 EYLÜL 2006
  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008