Python > 言語 > データ型 > 論理値型


Python - 言語 - データ型 - 論理値型

*

*



論理値(bool) 型と値

[edit]

  • 論理値型

    データ型

    生成子
    (コンストラクタ) 

    値リテラル    

    bool

    (Boolean)

    bool()

    True 

    False

    変更不能
    イミュータブル
    (immutable)

    変更可能
    ミュータブル
    (mutable)

    基本データ

    論理値型

    bool型

>>> True
True

>>> False
False

>>> bool()
False

>>> type( True )
<class 'bool'>

>>> type( False )
<class 'bool'>

>>> x = bool()

>>> type( x )
<class 'bool'>

>>> print( x )
False

ブール型以外の論理値

[edit]

  • 以下の値は偽とみなされる

    NoneType

    None ... 「値の非存在」を表す

    bool型

    False ... 直接的に「偽」を表す

    数値型におけるゼロ

    整数の0, 浮動小数点数の0.0, 虚数(複素数)の0j

    空の列( シーケンス )

    空文字("", ''),空リスト([]),空タプル(())

    空の写像( マッピング )

    空辞書({})

  • 以下の値も偽とみなされる
    • ユーザ定義クラスのインスタンスが以下の条件を満たすとき
      • そのクラスが __bool__() または __len__() メソッドを定義しており,

      • それらのメソッドが整数 0 または bool 値 False を返すとき

  • それ以外の全ての値は真と見なされる
    • すなわち,多くの型のオブジェクトは常に真とみなされる


演算子と関数

ブール演算 (条件式)

[edit]

  • 文法

<<orテスト>>  ::=  <<andテスト>> | <<orテスト>>  "or"  <<andテスト>>
<<andテスト>> ::=  <<notテスト>> | <<andテスト>> "and" <<notテスト>>
<<notテスト>> ::=  <<比較>> | "not" <<notテスト>>

論理演算子

[edit]

  • 論理演算子

    論理和

    x or  y

    x が偽なら y, そうでなければ x

    論理演算子

    論理積

    x and y

    x が偽なら x, そうでなければ y

    論理演算子

    否定

    not x

    x が偽なら True, そうでなければ False

  • orand はショートサーキット演算子

    • 第一引数が False のときにのみ,第二引数を評価する

  • not は非ブール演算子よりも優先度が低い

    • not a == bnot (a == b) と解釈される

    • a == not b は構文エラーとなる.

高度な話題

  • bool型の値以外に,and演算子やor演算子を適用すると...
    • and演算子なら,順に全オペランド(被演算対象)を調べ,全部が真とみなされるとき,最後のオペランド(被演算対象)を返す
    • or演算子なら,順にオペランド(被演算対象)を調べ,最初に真とみなされるオペランド(被演算対象)を返す
  • なので,bool型であることを保証するには,bool(...)で囲む必要がある

比較演算子 (関係演算子)

[edit]

比較演算子: 大小比較

  • 比較演算子

    大小比較

    <

    __lt__()

    より小さい

    比較演算子

    大小比較

    <=

    __le__()

    以下

    比較演算子

    大小比較

    >

    __gt__()

    より大きい

    比較演算子

    大小比較

    >=

    __ge__()

    以上

  • 数値リテラルの大小比較

>>> 123 < 456
True

>>> 123 > 456
False
  • 文字列リテラルの大小比較

>>> "abcd" < "abde"
True

>>> "abcd" > "abde"
False

比較演算子: 等価性

[edit]

  • 比較演算子

    等価性

    ==

    __eq__()

    等しい

    比較演算子

    不等性

    !=

    等しくない

  • 数値(整数)リテラルの等価性

>>> 123 == (120+3)
True

>>> (100+23) == (120+3)
True
  • 文字列リテラルの等価性

>>> "abcd" == ("ab"+"cd")
True

>>> ("a"+"bcd") == ("ab"+"cd")
True
  • 数値(浮動小数点数)リテラルの等価性

>>> 3.14 == 3.14
True

>>> 3.14 == 3.140
True

>>> 3.14 == 3.14+0
True

>>> x = 100
>>> y = 200

>>> (x + y) == (x + y)
True

>>> x = 100.1
>>> y = 200.2

>>> (x + y) == (x + y)
True

>>> x = "abc"
>>> y = "def"

>>> (x + y) == (x + y)
True

比較演算子: 同一性

[edit]

  • 比較演算子

    同一性

    is

    同一のオブジェクトである

    比較演算子

    非同一性

    is not

    同一のオブジェクトでない

  • 数値(整数)リテラルの同一性

>>> 123 is (120+3)
True

>>> (100+23) is (120+3)
True
  • 文字列リテラルの同一性

>>> "abcd" is ("ab"+"cd")
True

>>> ("a"+"bcd") is ("ab"+"cd")
True
  • 数値(浮動小数点数)リテラルの同一性

>>> 3.14 is 3.14
True

>>> 3.14 is 3.140
True

>>> 3.14 is 3.14+0
False

>>> x = 100
>>> y = 200

>>> (x + y) is (x + y)
False

>>> x = 100.1
>>> y = 200.2

>>> (x + y) is (x + y)
False

>>> x = "abc"
>>> y = "def"

>>> (x + y) is (x + y)
False

比較演算子: 等価性と同一性の相違(まとめ)

[edit]

  • 等価性

    同一性

    整数リテラル

    >>> 123         == 123        
    True 

    >>> 123         is 122        
    True 

    >>> 123         == (120+3)    
    True 

    >>> 123         is (120+3)    
    True 

    >>>(100+23)     == (120+3)    
    True 

    >>> (100+23)    is (120+3)    
    True 

    文字列リテラル

    >>> "abcd"      == ("ab"+"cd")
    True 

    >>> "abcd"      is "abcd"     
    True 

    >>> "abcd"      == ("ab"+"cd")
    True 

    >>> "abcd"      is ("ab"+"cd")
    True 

    >>> ("a"+"bcd") == ("ab"+"cd")
    True 

    >>> ("a"+"bcd") is ("ab"+"cd")
    True 

    浮動小数点数リテラル

    >>> 3.14        == 3.14       
    True 

    >>> 3.14        is 3.14       
    True 

    >>> 3.14        == 3.140      
    True 

    >>> 3.14        is 3.140      
    True 

    >>> 3.14        == 3.14+0     
    True 

    >>> 3.14        is 3.14+0     
    False

    等価性

    同一性

    整数の変数値

    >>> x = 100  
    >>> y = 200  
    >>> (x + y) == (x + y)
    True 

    >>> x = 100  
    >>> y = 200  
    >>> (x + y) is (x + y)
    False

    文字列の変数値

    >>> x = 100.1
    >>> y = 200.2
    >>> (x + y) == (x + y)
    True 

    >>> x = 100.1
    >>> y = 200.2
    >>> (x + y) is (x + y)
    False

    浮動小数点数の変数値

    >>> x = "abc"
    >>> y = "def"
    >>> (x + y) == (x + y)
    True 

    >>> x = "abc"
    >>> y = "def"
    >>> (x + y) is (x + y)
    False

*

リファレンス

*



Software Engineering(IIJIMA, Tadashi -- Keio Univ.)



*

SoftEng: Python/Lang/DataType/Bool (last edited 2018-09-30 06:42:41 by TadashiIijima)