-1

bool(1)は Python を使用して True と同等であると予想しました - そうです - そして、変換されたときに他の整数がエラーになると予想しましたboolが、そうではないようです:

>>> x=23 #<-- replace with any integer
>>> bool(x)
True

何が起こっている?私は誤解しています - これは x をデータ型bool(x)に変換しませんか?Boolean


なぜ私がこれを直感に反すると思うかについての多くのコメント。上記を以下のように書くと、言語の知識がなくても一見すると直感に反するように見えます。

>>>True == bool(23)
True
4

4 に答える 4

13

5.1 真理値テストから:

次の値は false と見なされます。

  • None
  • False
  • 0、、、など0Lの任意の数値型の0.0ゼロ0j
  • ''、などの空のシーケンス。()[]
  • などの空のマッピング{}
  • __nonzero__()クラスがまたは__len__()メソッドを定義している場合、そのメソッドが整数zeroまたはbool値を返す場合、ユーザー定義クラスのインスタンスFalse

他のすべての値はtrueと見なされます。したがって、多くのタイプのオブジェクトは常に true です。

于 2013-10-08T18:58:15.787 に答える
2

他のポスターが述べたように、ゼロ以外の整数に対して真を与えます。

ここで述べたように、Pythonの他のものと似ています:

Python の「そうでない場合」の構文

(Rohit は、真実のテストに関する良い段落を引用しています)

于 2013-10-08T19:02:27.460 に答える
2

boolの目的は、値を bool データ型に変換すること自体ではありません。むしろ、値が真であるかどうかを返します。つまり、この関数と同じように動作します。

def bool_mimic(val):
    if val:
        return True
    else:
        return False

ドキュメントから:

ブール([x])

標準の真理値テスト手順 [ Rohitの回答を参照] を使用して、値をブール値に変換します。x が false または省略されている場合、これは を返しますFalse。それ以外の場合は を返しますTrueboolのサブクラスであるクラスでもありintます。クラスboolをさらにサブクラス化することはできません。その唯一のインスタンスはFalseTrueです。

int の場合、真でない整数は だけです0

于 2013-10-08T18:58:31.080 に答える
2

bool(x)Boolは、標準の真理値テスト手順を使用してその引数を に変換します。ifたとえば、テストでtrue を返すものはすべてTrue、引数として に渡されたときに返されboolます。

Pythonでまたはとして扱われる値を確認するには、 Truth Value Testingを確認してください。TrueFalse

于 2013-10-08T19:01:24.203 に答える