Bagaimana cara menggunakan Boolean dengan Python?

109

Apakah Python sebenarnya mengandung nilai Boolean? Saya tahu Anda bisa melakukan:

checker = 1
if checker:
    #dostuff

Tapi saya cukup bertele-tele dan senang melihat boolean di Jawa. Misalnya:

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

Apakah ada yang namanya Boolean dengan Python? Sepertinya saya tidak bisa menemukan yang seperti itu di dokumentasi.

Federer
sumber
1
Ingat ... Anda tidak perlu mendeklarasikan tipe saat membuat variabel. Cukup 'checker = False' saja sudah cukup.
Dominic Bou-Samra
10
@Dominic Bou-Samra: "Anda tidak perlu menyatakan tipe"? Itu tidak sepenuhnya benar. Saya pikir Anda harus mengatakan "Anda tidak mungkin mendeklarasikan tipe untuk variabel."
S. Lott
2
@ S.Lott "Anda tidak mungkin mendeklarasikan tipe untuk variabel" ... masih tidak benar karena Anda dapat mengetik some_var = int("1234")... baris itu secara eksplisit menetapkan some_var=>int
Kolob Canyon

Jawaban:

142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Sunting]

Untuk informasi lebih lanjut: http://docs.python.org/library/functions.html#bool

Kode Anda juga berfungsi, karena 1diubah menjadi Truebila perlu. Sebenarnya Python tidak memiliki tipe boolean untuk waktu yang lama (seperti di C lama), dan beberapa programmer masih menggunakan bilangan bulat daripada boolean.

Bastien Léonard
sumber
17
Biasanya lebih mudah menggunakan checker = (some_decision) (misalnya checker = (a <b)), daripada 'if'.
MAK
11
potongan ini agak menyesatkan ... Anda masih perlu mendefinisikan "pemeriksa" sebelum mengujinya. Sementara OP mendefinisikannya sebelumnya, dalam contoh Anda checker = Tidak ada yang mutlak diperlukan atau Anda akan mendapatkan UnboundLocalError
dprogramz
Python boolean adalah bilangan bulat. Truedan Falsemerupakan referensi ke intobjek yang diperluas dengan overriden __str__dan __repr__.
Fisikawan Gila
Python boolean bukanlah bilangan bulat; 1 is not True, tapi 1 == True.
BallpointBen
@BallpointBen: mereka adalah bilangan bulat dalam arti umum sebagai contoh dari inttipe, seperti yang ditunjukkan oleh isinstance(True, int).
Bastien Léonard
93

Boolean builtins menggunakan huruf besar: Truedan False.

Perhatikan juga bahwa Anda dapat melakukan checker = bool(some_decision)sedikit penyingkatan - boolhanya akan kembali Trueatau False.

Baik untuk mengetahui untuk referensi di masa mendatang bahwa kelas yang menentukan __nonzero__atau__len__ akan menjadi Trueatau Falsebergantung pada hasil dari fungsi tersebut, tetapi hampir semua hasil boolean objek lainnya akan menjadi True(kecuali untuk Noneobjek, urutan kosong, dan angka nol).

Mark Rushakoff
sumber
1
Terima kasih banyak atas wawasannya. Ketika suara populer beralih ke jawaban lain, saya memberi Bastien 'Jawaban yang Diterima'. Namun milik Anda sangat membantu! :)
Federer
23
bravado: apa gunanya tidak menerima jawaban yang menurut Anda paling membantu? Sama sekali tidak relevan jika jawaban lain lebih disukai.
tzot
2
Dan suara populer juga ada dengan jawaban ini. Pertimbangkan untuk mengubah suara Anda.
Alastor Moody
12

True... dan Falsejelas.

Jika tidak, Noneevaluasi ke False, seperti halnya integer 0dan juga float 0.0(meskipun saya tidak akan menggunakan float seperti itu). Juga, daftar kosong [], tuplet kosong (), dan string kosong ''atau ""dievaluasi ke False.

Coba sendiri dengan fungsinya bool():

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

dll ..

Terje Dahl
sumber
5

Jenis Boolean didefinisikan dalam dokumentasi:
http://docs.python.org/library/stdtypes.html#boolean-values

Dikutip dari doc:

Nilai Boolean adalah dua objek konstanta False dan True. Mereka digunakan untuk mewakili nilai-nilai kebenaran (meskipun nilai-nilai lain juga dapat dianggap salah atau benar). Dalam konteks numerik (misalnya ketika digunakan sebagai argumen untuk operator aritmatika), mereka masing-masing berperilaku seperti bilangan bulat 0 dan 1. Fungsi bawaan bool () dapat digunakan untuk mentransmisikan nilai apa pun ke Boolean, jika nilai tersebut dapat diartikan sebagai nilai kebenaran (lihat bagian Pengujian Nilai Kebenaran di atas).

Mereka masing-masing ditulis sebagai False dan True.

Jadi dalam kode java hapus tanda kurung, ubah trueke Truedan Anda akan baik-baik saja :)

Anurag Uniyal
sumber
4

Ya, ada booltipe data (yang mewarisi dari intdan hanya memiliki dua nilai: Truedan False).

Tetapi juga Python memiliki boolean-ablekonsep untuk setiap objek, yang digunakan ketika fungsi bool([x])dipanggil.

Lihat lebih banyak: objek. bukan nol dan boolean-nilai-dari-objek-dalam-python .

mobil van
sumber
x = bool (0) # false && x = bool (1) # true
Julian
0

Tidak seperti Java di mana Anda akan mendeklarasikan boolean flag = True, dengan Python Anda hanya dapat mendeklarasikanmyFlag = True

Python akan menafsirkan ini sebagai variabel boolean

pembuat kode
sumber