web-dev-qa-db-ja.com

Pythonでのbool()の実用的なアプリケーションは何ですか?

それが日常のコーディングで使用されているときは?私は学んでいますPython using this tutorial 。私が何を参照しているかが説明されています here (ページの中央)、しかし私はできます '理解します。TrueとFalseの使用の原則は理解していますが、実際にコードを記述しているときに実際にbool()関数を使用する(または使用する)タイミングはわかりません。コードでbool()の日常的な実用的な例を示します。

11

Python=値をブール値に変換できます。

別のPythonオブジェクトに応じて、TrueまたはFalseのいずれかを保存したい場合があります。代わりに:

_if python_object:
    result = True
else:
    result = False
_

あなたは単に行います:

_result = bool(python_object)
_

方法Pythonオブジェクトはブール値に変換され、すべてが 真の値)に依存します 。一般的に言えば、None、数値0、空のコンテナ(空のリスト、辞書、セット、タプル、文字列など)はすべてFalseで、残りはTrueです。

明示的なブール値が必要な場合はいつでも使用します。オブジェクトツリーを構築していて、ツリーに子がある場合にTrueを返すメソッドを含めるとします。

_class Tree(object):
    def __init__(self, children):
        self.children

    def has_children(self):
        return bool(self.children)
_

_self.children_が空でない場合はTree().has_children()Trueを返し、そうでない場合はFalseを返します。

22
Martijn Pieters

bool()が何を行うかを理解するには、最初にブール値の概念を理解する必要があります。

ほとんどのプログラミング言語では、ブール変数は2進数で0または1のいずれかで表されます。 1は「True」を表し、0は「False」を表します

数値1は、いくつかの点でブール値Trueとは異なります。たとえば、次のコードを見てください。

_>>> 1 is True
False
_

Pythonによると、1はTrueとは異なります。しかしながら:

_>>> bool(1) is True
True
_

ここでbool()関数を使用する場合、1をブール値に変換します。この変換は「キャスティング」と呼ばれます。 1をブール値にキャストすると、「True」の値が返されます。

ほとんどのオブジェクトはブール値にキャストできます。私の経験では、すべての標準オブジェクトは、0、なし、False、または空の反復可能オブジェクト(例: ""、[]、または{})でない限り、Trueと評価されるはずです。例として:

_>>> bool({})
False
>>> bool({"":False})
True
>>> bool(None)
False
>>> bool("")
False
>>> bool("hello")
True
>>> bool(500)
True
>>> bool(0)
False
>>> bool(False)
False
>>> bool(-1)
True
_

最後に、ブール値は「True」または「False」として出力されます

_>>> print bool(1)
True
_
5
mgoldwasser

boolは、Pythonにより、通常TrueまたはFalseとは見なされないものへのブール変換が可能になるという事実を公開します。

この例はリストです。 len(my_list)が0より大きい場合、これもTrueとして扱います。長さがなければ-len()が0を返す場合-はFalseです。これにより、次のようなコードを記述できます。

def check_list_for_values(my_list, value):
    return [x for x in my_list if x == value]

your_list = [5, 6, 7, 8, 9, 5, 3, 4, 8]
if check_list_for_values(3, your_list):
    print "got a match"

check_list_for_valuesは、長さが0より大きいリストを返し、Trueと評価されるため、「got a match」と出力します。返されるリストに長さがなければ...

your_list = [5, 6, 7, 8, 9, 5, 3, 4, 8]
if check_list_for_values('elephant', your_list):
    print "got a match"

次に、Falseと評価されるため、何も出力されません。

4
user890167

値をブール値に変換します。

0
Lee Watson