目標
「組み込み関数」について理解する。
「組み込み関数」の「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()」は『引数に指定したオブジェクトの「識別値」を確認できる!』これに尽きます。
「組み込み関数」の「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(属性やメソッド))」
# ---基底クラス---
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になっています。
# ---基底クラス---
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()」でよく利用するのは型の確認ですが、何かのモジュールやフレームワークで突然目にすることもあるので引数みっつのパターンもあることは知っておくのがお勧めです。
今回は以上になります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。