05-Python

Python(Part.7)| python【組み込み関数(1)】

python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

「組み込み関数」について理解する。
「組み込み関数」の「id()」の利用方法を理解する。
「組み込み関数」の「type()」の利用方法を理解する。

「プログラミング言語」には標準でいくつかの「組み込み関数」という「関数」が準備されています。「python」では約70個の「組み込み関数」が準備されていて「python」を利用した開発を支えてくれています。

「組み込み関数」は個人で実装しようとすると、かなり大変な開発となります(他の言語の習得も必要です)。

組み込み関数

「Python」の「組み込み関数」の概要

組み込み関数とは

「組み込み関数」とは「関数」を分類した呼び方で、プログラミング言語に標準で準備されている「関数」のことです。これに対して、プログラムを記述する時にプログラマがオリジナルに作成する「関数」を「ユーザー定義関数」と呼びます。

いずれの「関数」も処理をひとつにまとめて保管されていると捉えることができるので、「関数」は、よく「プログラムの部品」として例えられます。

「Python」の「組み込み関数」については「バージョン3.11.5」の時点で71個ほど準備されていて、プログラマは、その使用方法については「Python 3.11.5 documentation」で確認できます。(https://docs.python.org/ja/3/library/functions.html)

このサイトでもいくつか「組み込み関数」の利用方法を扱っていきます。

「組み込み関数」の「id()」の利用方法

「id(object)」は引数に指定したobject(オブジェクト)の「識別値」を返してくれます。「id()」を利用することで例えば変数が紐づけているオブジェクトを確認することができます。

組み込み関数「id()」のリファレンスはこちらから

引数にリテラルを設定する場合

print('----------------------------------')
print(id(1)) #整数リテラルを直接設定
print('----------------------------------')
print(id(3.14)) #浮動小数点数リテラルを直接設定
print('----------------------------------')
print(id('あいうえお')) #文字列リテラルを直接設定
print('----------------------------------')
print(id(True)) #組み込み定数を直接設定
print('----------------------------------')
print(id([1,2,3,4,5])) #リストを直接設定
print('----------------------------------')
print(id((1,2,3,4,5))) #タプルを直接設定
print('----------------------------------')

実行結果

識別値が返ってきています。

引数に変数を設定する場合

int_object = 1
float_object = 3.14
str_object = 'あいうえお'
boolean_object = True
list_object = [1,2,3,4,5]
tuple_object =(1,2,3,4,5)

print('----------------------------------')
print(id(int_object)) #整数リテラルを変数を利用して設定
print(id(1)) #整数リテラルを直接設定
print('----------------------------------')
print(id(float_object)) #浮動小数点数リテラルを変数を利用して設定
print(id(3.14)) #浮動小数点数リテラルを直接設定
print('----------------------------------')
print(id(str_object)) #文字列リテラルを変数を利用して設定
print(id('あいうえお')) #文字列リテラルを直接設定
print('----------------------------------')
print(id(boolean_object)) #組み込み定数を変数を利用して設定
print(id(True)) #組み込み定数を直接設定
print('----------------------------------')
print(id(list_object)) #リストを変数を利用して設定
print(id([1,2,3,4,5])) #リストを直接設定
print('----------------------------------')
print(id(tuple_object)) #タプルを変数を利用して設定
print(id((1,2,3,4,5))) #タプルを直接設定
print('----------------------------------')

実行結果

識別値が返ってきています。変数を引数に指定した場合と、同じ値を引数に指定した場合を並べて識別値の違いを確認しています。リスト以外では同じ値が返ってきています。

「id()」は『引数に指定したオブジェクトの「識別値」を確認できる!』これに尽きます。

「id()」やこのあと確認する「type()」は開発時だけでなくpythonの学習でもよく利用します。使い方を押さえておくと何かと役に立ちます。

「組み込み関数」の「type()」の利用方法

「type()」には、ふたつの利用方法があります。ひとつめは引数をひとつ利用する方法でobject(オブジェクト)を指定します。この場合、「type()」はobject(オブジェクト)の型を返します。もうひとつは引数をみっつ利用する方法で、こちらはクラスの継承を行うことができます。

組み込み関数「type()」のリファレンスはこちらから

引数がひとつの場合(リテラルを設定)

「type(object)」では引数に指定したobject(オブジェクト)の「型」を返してくれます。

print('----------------------------------')
print(type(1)) #整数リテラルを直接設定
print('----------------------------------')
print(type(3.14)) #浮動小数点数リテラルを直接設定
print('----------------------------------')
print(type('あいうえお')) #文字列リテラルを直接設定
print('----------------------------------')
print(type(True)) #組み込み定数を直接設定
print('----------------------------------')
print(type([1,2,3,4,5])) #リストを直接設定
print('----------------------------------')
print(type((1,2,3,4,5))) #タプルを直接設定
print('----------------------------------')

実行結果

それぞれの型が返ってきています。

引数がひとつの場合(変数を設定)

「type()」を利用することで変数が紐づけているオブジェクトの「型」を確認することができます。

int_object = 1
float_object = 3.14
str_object = 'あいうえお'
boolean_object = True
list_object = [1,2,3,4,5]
tuple_object =(1,2,3,4,5)

print('----------------------------------')
print(type(int_object)) #整数リテラルを変数を利用して設定
print(type(1)) #整数リテラルを直接設定
print('----------------------------------')
print(type(float_object)) #浮動小数点数リテラルを変数を利用して設定
print(type(3.14)) #浮動小数点数リテラルを直接設定
print('----------------------------------')
print(type(str_object)) #文字列リテラルを変数を利用して設定
print(type('あいうえお')) #文字列リテラルを直接設定
print('----------------------------------')
print(type(boolean_object)) #組み込み定数を変数を利用して設定
print(type(True)) #組み込み定数を直接設定
print('----------------------------------')
print(type(list_object)) #リストを変数を利用して設定
print(type([1,2,3,4,5])) #リストを直接設定
print('----------------------------------')
print(type(tuple_object)) #タプルを変数を利用して設定
print(type((1,2,3,4,5))) #タプルを直接設定
print('----------------------------------')

実行結果

変数を利用しても紐づいているリテラルの型が返ってきています。

引数がみっつの場合(クラスの継承ができます。)

引数がみっつの利用方法についてはクラスの知識が必要です。難しく感じる場合は読み飛ばしてください。

「type(name, bases, dict, **kwds)」では第二引数の「bases」に指定したクラスを継承して第一引数の「name」に指定した名前で派生クラスを作成します。第三引数では辞書型として「dict」にクラス内の属性やメソッドがコピーされ、これらを指定して変更が可能(**kwds)です。

「type(派生クラスの名前, 基底クラス, dict, **kwds(属性やメソッド))」

type関数を利用することでクラスの継承を行うことができます。まずは継承について「type(name, bases, dict, **kwds)」を利用しない場合のプログラムを入力してみます。

# ---基底クラス---
class Car:
    gas = 100
    water = 100
    battery = 100
    speed = 0
    acceleration = 10


    def accelerator(self):
        while self.speed <= 80:
            if self.speed == 80:
                break
            else:
                self.speed += self.acceleration
                print('スピードは{}です'.format(self.speed))
        return self.speed

    def brake(self):
        while self.speed >= 0:
            if self.speed == 0:
                break
            else:
                self.speed -= self.acceleration
                print('スピードは{}です'.format(self.speed))
        return self.speed

# ---継承クラス---
class TOYOTA(Car):
    acceleration = 20

# ---継承したクラスの利用---
carolla = TOYOTA()
carolla.accelerator()
carolla.brake()

実行結果

スピードが20ずつ上がって80になり、その後20ずつ下がって0になっています。

type関数を利用することでクラスの継承を行うことができます。
今度は「type(name, bases, dict, **kwds)」を利用した場合のプログラムを入力してみます。

# ---基底クラス---
class Car:
    gas = 100
    water = 100
    battery = 100
    speed = 0
    acceleration = 10

    def accelerator(self):
        while self.speed <= 80:
            if self.speed == 80:
                break
            else:
                self.speed += self.acceleration
                print('スピードは{}です'.format(self.speed))
        return self.speed

    def brake(self):
        while self.speed >= 0:
            if self.speed == 0:
                break
            else:
                self.speed -= self.acceleration
                print('スピードは{}です'.format(self.speed))
        return self.speed

# ---継承---
TOYOTA = type('TOYOTA', (Car,), dict(acceleration = 20))

# ---継承したクラスの利用---
carolla = TOYOTA()
carolla.accelerator()
carolla.brake()

実行結果

先程と同様の結果が得られます。(スピードが20ずつ上がって80になり、その後20ずつ下がって0になっています。)

「type()」でよく利用するのは型の確認ですが、何かのモジュールやフレームワークで突然目にすることもあるので引数みっつのパターンもあることは知っておくのがお勧めです。

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST