40721


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

* * *

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

* * *

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

[code]

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

* * *

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

* * *

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


CC BY-SA 3.0
2017-12-03T02:53:23.677
39993
2018-01-05T02:57:06.747
7886
question
python python3
Pythonでデータ型を確認したい。 typeとpprintの違いは？


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

printしないと表示されません。

[code]

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


CC BY-SA 3.0
2017-12-03T05:40:33.420
39996
2017-12-03T05:40:33.420
26311
39993
answer


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`など、外部から別に持ってきた  
モジュールで、インストール後にインポートできるような  
ものを、 **サードパーティーモジュール** と言います。  
ゆえに、 **組み込み型** は、「特別な宣言や命令なしに  
利用できる型」と言えます。  
導入にちょっと段階がいるだけで、データ型であることは  
変わりません。


CC BY-SA 3.0
2018-01-04T12:04:11.693
40721
2018-01-05T02:57:06.747
2018-01-05T02:57:06.747
24284
24284
39993
answer


Q3への回答について補足します。

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

しないです。[公式ドキュメント](https://docs.python.org/3/index.html) で「primitive data
type」を検索してみてください。

ただし、非公式な個人ドキュメント（[Learn Python
Visually](http://pythonvisually.com/ebook/primitive-data-types.html),
[ZetCodeのPython
Tutorial](http://zetcode.com/lang/python/datatypes/)）ではそのような表現もみられました。

プリミティブデータ型については、オブジェクトと非オブジェクトで区別する人もいれば、複合型でなければプリミティブと捉える人もいます。Pythonにプリミティブデータ型はあるか？
と質問したら不毛な論争になるかもしません。定義が共有されてない場合があるので、どういう意味で聞いているかによります。

ただ、[他の方の回答](https://ja.stackoverflow.com/a/40721/26045) でプリミティブデータ型について、

> ビルトインタイプ、ビルトイン型とか、組み込み型と言われます。

と書かれているのは、指しているものが全く違うので適切ではないと思います（ので、補足として回答させてもらいました）。組み込み型はプリミティブデータ型の言い換えではありません。


CC BY-SA 3.0
2018-01-04T20:44:59.420
40728
2018-01-04T20:44:59.420
39993
answer