Pythonでデータ型を確認したい。 typeとpprintの違いは？


**Pythonの基本的なデータ型を確認したいのですが、**

* * *

**Q1.どうやって確認するのでしょうか？**  
・type()?  
・pprint()?  
・両者の違いは？

* * *

**Q2.下記コードで結果に何も表示されないのは何故ですか？**  
・type()はオブジェクト型のみが対象?

[code]

    from fractions import Fraction
    f = Fraction(5, 7)
    type(f)
    
[/code]

* * *

**Q3.Pythonでプリミティブデータ型という言い方をしますか？**

* * *

**Q4.分数について**  
・「Fraction」で一つのデータ型ですか？  
・意味合いで言えば、「int」や「float」と同等ですか？




Q1.どうやって確認するのでしょうか？  
・type()?  
・pprint()?  
・両者の違いは？  
type()を使います。  
pprint()は、複雑なデータを整えて表示する機能を持ちます。

[code]

    import pprint
    
    print([[i for i in range(10)]]*2)
    pprint.pprint([[i for i in range(11)]]*3)
    #print
    [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
    #pprint
    [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
    
[/code]

Q2.下記コードで結果に何も表示されないのは何故ですか？  
・type()はオブジェクト型のみが対象?

[code]

    from fractions import Fraction
    f = Fraction(5, 7)
    type(f)
    
[/code]

別の回答者様が書かれていますが、

[code]

    print(type(f))
    
[/code]

として初めて表示されます。  
`type()`だけだと、`f`の型を取得はできても、出力表示するという  
命令までは持っていないからです。  
`type()`は、オブジェクト型のみが対象です。  
オブジェクト型というのは、名前を付けることのできるものです。

[code]

    b = "オブジェクト"
    　　print(type(b))
    <class 'str'>
    def sai():
        return 1
    
    print(type(sai()))
    <class 'int'>
    print(type(sai))
    <class 'function'>
    import re
    print(type(re))
    <class 'module'>
    #cという名前のついたreモジュール
    c = re 
    print(type(c))
    <class 'module'>
    
[/code]

Pythonでは、変数名をつけられるものはすべてオブジェクトと  
言っていいと思います。

Q3.Pythonでプリミティブデータ型という言い方をしますか？

「Pythonの基本的なデータ型を確認したいのですが」  
という質問なので、Pythonの基本的なデータ型を、  
プリミティブデータ型という言い方をしますか？という  
質問だと判断します。  
Pythonの基本的なデータ型は、ビルトインタイプ、  
ビルトイン型、組み込み型と呼ばれ、そのようには  
呼ばれないです。

Q4.分数について  
・「Fraction」で一つのデータ型ですか？  
そうです。  
・意味合いで言えば、「int」や「float」と同等ですか？  
そうです。  
ただ、`int`は、 **組み込み型** なので、`import`しなくても、  
即座に使えます。  
`Fraction`は、  

[code]

    from fractions import Fraction
    
[/code]

とあるように、フラクションモジュールの中にある  
`Fraction`型です。モジュールの中に入っているか  
どうかの違いだけです。こういう、`Python`に最初から  
あるという点では **組み込み型** だけど、インポートが  
別に必要な場合を、 **標準ライブラリ** と言います。  
これに、`pygame`や、`PyQt5`など、外部から別に持ってきた  
モジュールで、インストール後にインポートできるような  
ものを、 **サードパーティーモジュール** と言います。  
ゆえに、 **組み込み型** は、「特別な宣言や命令なしに  
利用できる型」と言えます。  
導入にちょっと段階がいるだけで、データ型であることは  
変わりません。




Q1.どうやって確認するのでしょうか？  
・type()?  
・pprint()?  
・両者の違いは？  
type()を使います。  
pprint()は、複雑なデータを整えて表示する機能を持ちます。

[code]

    import pprint
    
    print([[i for i in range(10)]]*2)
    pprint.pprint([[i for i in range(11)]]*3)
    #print
    [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
    #pprint
    [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
    
[/code]

Q2.下記コードで結果に何も表示されないのは何故ですか？  
・type()はオブジェクト型のみが対象?

[code]

    from fractions import Fraction
    f = Fraction(5, 7)
    type(f)
    
[/code]

別の回答者様が書かれていますが、

[code]

    print(type(f))
    
[/code]

として初めて表示されます。  
`type()`だけだと、`f`の型を取得はできても、出力表示するという  
命令までは持っていないからです。  
`type()`は、オブジェクト型のみが対象です。  
オブジェクト型というのは、名前を付けることのできるものです。

[code]

    b = "オブジェクト"
    　　print(type(b))
    <class 'str'>
    def sai():
        return 1
    
    print(type(sai()))
    <class 'int'>
    print(type(sai))
    <class 'function'>
    import re
    print(type(re))
    <class 'module'>
    #cという名前のついたreモジュール
    c = re 
    print(type(c))
    <class 'module'>
    
[/code]

Pythonでは、変数名をつけられるものはすべてオブジェクトと  
言っていいと思います。

Q3.Pythonでプリミティブデータ型という言い方をしますか？

「Pythonの基本的なデータ型を確認したいのですが」  
という質問なので、Pythonの基本的なデータ型を、  
プリミティブデータ型という言い方をしますか？という  
質問だと判断します。  
Pythonの基本的なデータ型は、ビルトインタイプ、  
ビルトイン型、組み込み型と呼ばれ、そのようには  
呼ばれないです。

Q4.分数について  
・「Fraction」で一つのデータ型ですか？  
そうです。  
・意味合いで言えば、「int」や「float」と同等ですか？  
そうです。  
ただ、`int`は、 **組み込み型** なので、`import`しなくても、  
即座に使えます。  
`Fraction`は、  

[code]

    from fractions import Fraction
    
[/code]

とあるように、フラクションモジュールの中にある  
`Fraction`型です。モジュールの中に入っているか  
どうかの違いだけです。こういう、`Python`に最初から  
あるという点では **組み込み型** だけど、インポートが  
別に必要な場合を、 **標準ライブラリ** と言います。  
これに、`pygame`や、`PyQt5`など、外部から別に持ってきた  
モジュールで、インストール後にインポートできるような  
ものを、 **サードパーティーモジュール** と言います。  
ゆえに、 **組み込み型** は、「特別な宣言や命令なしに  
利用できる型」と言えます。  
導入にちょっと段階がいるだけで、データ型であることは  
変わりません。

