Python'da bir Boolean'ı nasıl kullanırım?


109

Python gerçekten bir Boolean değeri içeriyor mu? Yapabileceğini biliyorum:

checker = 1
if checker:
    #dostuff

Ama oldukça bilgiçim ve Java'da boole görmekten zevk alıyorum. Örneğin:

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}

Python'da Boole diye bir şey var mı? Belgelerde buna benzer bir şey bulamıyorum.


1
Unutmayın ... bir değişken oluştururken tür bildirmenize gerek yoktur. Sadece 'checker = False' yeterli olacaktır.
Dominic Bou-Samra

10
@Dominic Bou-Samra: "türleri bildirmenize gerek yok"? Bu tam olarak doğru değil. Bence "bir değişken için tip tanımlayamazsınız" demelisiniz.
S.Lott

2
@ S.Lott "bir değişken için bir tür bildiremezsiniz" ... hala doğru değil çünkü yazabilirsiniz some_var = int("1234")... bu satır açıkça ayarlar some_var=>int
Kolob Canyon

Yanıtlar:


142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Düzenle]

Daha fazla bilgi için: http://docs.python.org/library/functions.html#bool

Kodunuz da çalışır, çünkü gerektiğinde 1dönüştürülür True. Aslında Python uzun süredir boolean tipine sahip değildi (eski C'de olduğu gibi) ve bazı programcılar hala boole yerine tamsayılar kullanıyor.


17
'İf' yerine checker = (some_decision) (örneğin, checker = (a <b)) kullanmak genellikle daha kolaydır.
MAK

11
bu kod parçası biraz yanıltıcı ... Test etmeden önce "checker" ı tanımlamanız gerekiyor. OP bunu daha önce tanımlasa da, örneğinizde checker = Hiçbiri kesinlikle gerekli veya bir UnboundLocalError alacaksınız
dprogramz

Python booleanları tam sayılardır. Trueve geçersiz kılınan Falsegenişletilmiş intnesnelere __str__ve __repr__.
Mad Physicist

Python booleanları tamsayı değildir; 1 is not True, ama 1 == True.
BallpointBen

@ BallpointBen: intgösterildiği gibi , türün örnekleri olmanın sağduyu anlamında tamsayılardır isinstance(True, int).
Bastien Léonard

93

Boole yerleşikleri büyük harfle yazılır: Trueve False.

Ayrıca checker = bool(some_decision)biraz kısaltma yapabileceğinizi de unutmayın - boolyalnızca Trueveya False.

Gelecekte başvurmak üzere, sınıfların__nonzero____len__ bu işlevleri tanımlayan veya olacak Trueveya Falsebu işlevlerin sonucuna bağlı olacağını bilmek iyidir , ancak hemen hemen her diğer nesnenin mantıksal sonucu olacaktırTrue ( Nonenesne, boş diziler ve sayısal sıfırlar hariç ).


1
Anlayışınız için çok teşekkür ederim. Popüler oylama diğer cevaba kayarken, Bastien'e "Kabul Edilen Cevap" ı verdim. Ancak sizinki çok yardımcı oldu! :)
Federer

23
bravado: En yararlı bulduğunuz yanıtı kabul etmemenin anlamı nedir? Başka bir cevap daha fazla oylanırsa bu tamamen alakasızdır.
tzot

2
Ve halk oyu da bu cevapla. Oyunuzu değiştirmeyi düşünün.
Alastor Moody

12

True ... ve False tabii ki.

Aksi takdirde, Nonehem tamsayı 0hem de float gibi False olarak değerlendirilir 0.0( bunun gibi float kullanmamama rağmen). Ayrıca boş listeler [], boş başlıklar ()ve boş dizeler ''veya ""False olarak değerlendirin.

İşlevle kendiniz deneyin bool():

bool([])
bool(['a value'])
bool('')
bool('A string')
bool(True)  # ;-)
bool(False)
bool(0)
bool(None)
bool(0.0)
bool(1)

vb..


5

Boole türleri, belgelerde tanımlanmıştır:
http://docs.python.org/library/stdtypes.html#boolean-values

Doc'dan alıntı:

Boole değerleri, False ve True sabit nesneleridir. Doğruluk değerlerini temsil etmek için kullanılırlar (diğer değerler de yanlış veya doğru olarak kabul edilebilir). Sayısal bağlamlarda (örneğin bir aritmetik işleç için bağımsız değişken olarak kullanıldığında), sırasıyla 0 ve 1 tam sayıları gibi davranırlar. Yerleşik fonksiyon bool (), değer bir doğruluk değeri olarak yorumlanabiliyorsa, herhangi bir değeri bir Boolean'a dönüştürmek için kullanılabilir (yukarıdaki Gerçek Değer Testi bölümüne bakın).

Sırasıyla False ve True olarak yazılırlar.

Yani java kod kaldır ayraçlar, değişiklik trueiçin Trueve ok olacak :)



0

Bildireceğiniz Java'nın aksine boolean flag = True , Python'da yalnızcamyFlag = True

Python bunu bir boole değişkeni olarak yorumlar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.