この記事では、Python の組み込み関数の使い方を解説します。
組み込み関数とは、プログラム言語にあらかじめ用意されている関数のことで、モジュールなどをインポートしなくても呼び出すことができます。
それでは、組み込み関数の使い方を見ていきましょう!
引数に渡された値の絶対値を返します。引数には、int型、float型、complex型 の値を指定できます。
abs(x)
サンプル
試しに色々な型の絶対値を出力してみます。
print(f'int型: {abs(-1)}')
print(f'float型: {abs(-5.61)}')
print(f'complex型: {abs(2j+1)}')
実行結果
int型: 1
float型: 5.61
complex型: 2.23606797749979
自作クラスに __abs__
メソッド を定義することで abs
関数の引数に指定できます。
class Test:
def __abs__(self):
return 'absです'
obj = Test()
print(abs(obj))
実行結果
absです
引数に指定したイテラブルオブジェクトの要素が全て True
ならば True
、そうでなければ False
を返します。
all(iterable)
サンプル
flags = []
print(all(flags))
flags = [True, True]
print(all(flags))
flags = [True, False]
print(all(flags))
実行結果
True
True
False
引数に指定したイテラブルオブジェクトの要素のいずれかが True
ならば True
、全ての要素が False
ならば False
を返します。
any(iterable)
サンプル
flags = []
print(any(flags))
flags = [True, True]
print(any(flags))
flags = [True, False]
print(any(flags))
flags = [False, False]
print(any(flags))
実行結果
False
True
True
False
ascii()関数 は、引数に指定されたオブジェクトを文字列として返します。非ASCII文字(ひらがなや漢字など)が指定された場合は、Unicode文字 に変換された文字列が返されます。
ascii(object)
サンプル
n = 123
print(f'123: {ascii(n)}')
s = 'Python'
print(f'Python: {ascii(s)}')
s = 'パイソン'
print(f'パイソン: {ascii(s)}')
実行結果
123: 123
Python: 'Python'
パイソン: '\u30d1\u30a4\u30bd\u30f3'
repr()関数 は、引数に指定したオブジェクトの __repr__
メソッド を呼び出します。
__repr__
メソッド は、eval()
関数 に渡した際に同等の値を持つオブジェクトを生成する文字列を返します。
repr(object)
サンプル
class TestObject:
def __init__(self, arg):
self.arg = arg
def __str__(self):
return f'arg = {self.arg}'
def __repr__(self):
return f'TestObject({self.arg})'
# インスタンス化
obj = TestObject(1)
print(f'str: {obj}')
print(f'repr: {repr(obj)}')
# eval関数で同等のオブジェクトを生成できる
e = eval(repr(obj))
print(f'eval: {e}')
実行結果
str: arg = 1
repr: TestObject(1)
eval: arg = 1
str()
関数 は、文字列型のオブジェクトを返します。この関数は引数に指定されたオブジェクトに定義されている __str__
メソッド を呼び出しています。
str(object)
サンプル
class Obj:
def __str__(self):
return 'Objがstrに変換されました'
obj = Obj()
s = str(obj)
print(s)
# print関数も__str__メソッドの戻り値を出力するので以下でも結果は同じ
print(obj)
実行結果
Objがstrに変換されました
Objがstrに変換されました
Link文字列の使い方
bin()
関数は、引数に指定した整数を2進文字列に変換します。
bin(x)
サンプル
print(bin(2))
print(bin(-4))
実行結果
0b10
-0b100
oct()
関数 は、整数を8進文字列に変換します。
oct(x)
サンプル
print(oct(1))
print(oct(8))
実行結果
0o1
0o10
hex()
関数 は、整数を16進文字列に変換します。
hex(x)
サンプル
print(hex(1))
print(hex(16))
実行結果
0x1
0x10
引数に渡された値を真理値判定手続きに基づいて True
か False
に変換します。引数が省略された場合は False
が返されます。
bool(x)
サンプル
# 引数省略
print(f'引数無し: {bool()}')
# 数値型(整数)
print(f'整数: 0={bool(0)}, 1={bool(1)}')
# 文字列
print(f'文字列: ""={bool("")}, "abc"={bool("abc")}')
# 配列(リスト)
print(f'リスト: []={bool([])}, [1]={bool([1])}')
実行結果
引数無し: False
整数: 0=False, 1=True
文字列: ""=False, "abc"=True
リスト: []=False, [1]=True
breakpoint()
関数 が呼び出された箇所からデバッガへ移行することができます。デバッガに移行することで1行ずつ処理を確認しながらデバッグすることが可能です。
※ バージョン3.7で追加
breakpoint(*args, **kwargs)
サンプル
arg = 1
breakpoint()
print(1)
print(2)
arg = 99
print(5)
実行結果
> /Users/user/Desktop/Python/test.py(7)<module>()
-> print(1)
(Pdb) arg
1
(Pdb) n
1
> /Users/user/Desktop/Python/test.py(8)<module>()
-> print(2)
(Pdb) n
2
> /Users/user/Desktop/Python/test.py(10)<module>()
-> arg = 99
(Pdb) n
> /Users/user/Desktop/Python/test.py(12)<module>()
-> print(5)
(Pdb) arg
99
(Pdb) n
5
--Return--
> /Users/user/Desktop/Python/test.py(12)<module>()->None
-> print(5)
(Pdb) n
ミュータブル(可変)なバイト配列を返します。
引数に指定する値によって以下のように初期化方法が変わります。
bytearray(source, encoding, errors)
サンプル
# 文字列
ba = bytearray('Hello', 'UTF-8')
print(ba)
# 整数
ba = bytearray(3)
print(ba)
# 配列
ba = bytearray([1, 2, 3])
print(ba)
実行結果
bytearray(b'Hello')
bytearray(b'\x00\x00\x00')
bytearray(b'\x01\x02\x03')
イミュータブル(不変)なバイト配列を返します。この関数は、bytearray()
関数のイミュータブル版です。
bytes(source, encoding, errors)
サンプル
# 文字列
ba = bytes('Hello', 'UTF-8')
print(ba)
# 整数
ba = bytes(3)
print(ba)
# 配列
ba = bytes([1, 2, 3])
print(ba)
実行結果
b'Hello'
b'\x00\x00\x00'
b'\x01\x02\x03'
引数に指定したオブジェクトが呼び出し可能であれば True
、でなければ False
を返します。インスタンスを指定した場合はクラスに __call__
メソッド が定義されている場合のみ True
を返します。
※ バージョン3.2で追加
callable(object)
サンプル
# 整数
print(f'整数: {callable(1)}')
# 組み込み関数
print(f'abs関数: {callable(abs)}')
# クラス
print(f'objectクラス: {callable(object)}')
# インスタンス(__call__メソッド無し)
obj = object()
print(f'インスタンス(callメソッド無し): {callable(obj)}')
# インスタンス(__call__メソッド有り)
class Obj:
def __call__(self):
return 'callしました'
obj = Obj()
print(f'インスタンス(callメソッド有り): {callable(obj)}')
実行結果
整数: False
abs関数: True
objectクラス: True
インスタンス(callメソッド無し): False
インスタンス(callメソッド有り): True
引数に指定された文字コード(整数)を文字列に変換して返します。
chr(i)
サンプル
n = 97
print(f'文字コード: {n}, 文字: {chr(n)}')
n = 192
print(f'文字コード: {n}, 文字: {chr(n)}')
n = 33
print(f'文字コード: {n}, 文字: {chr(n)}')
実行結果
文字コード: 97, 文字: a
文字コード: 192, 文字: À
文字コード: 33, 文字: !
1文字の文字列を文字コードに変換して返します。
ord(c)
サンプル
print(ord('a'))
print(ord('A'))
print(ord('!'))
実行結果
97
65
33
クラスメソッドを定義するためのデコレータです。cls
引数 からクラスにアクセスすることができます。メソッドの上部に記述します。
class クラス名:
@classmethod
def クラスメソッド名(cls):
なんらかの処理
サンプル
class C:
def __init__(self, arg=0):
self.arg = arg
@classmethod
def f(cls):
return cls(9)
t = C.f()
print(t.arg)
print(type(t))
実行結果
9
<class '__main__.C'>
メソッドを静的メソッドに変換できます。デコレータとして使われます。
def クラス名:
@staticmethod
def メソッド名():
何かしらの処理
サンプル
class Obj:
@staticmethod
def static_method():
print('Objクラスのstatic_method')
Obj.static_method()
実行結果
Objクラスのstatic_method
source
引数 に渡された値をコードオブジェクト、または ASTオブジェクト にコンパイルします。生成したコードオブジェクトは、exec()
で実行したり eval()
で評価することができます。
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
filename
コードの呼び出し元のファイルを指定する。ファイルから呼び出さないのであれば '<sting>'
を渡す。
mode
sourceによって指定する mode を変更します。
'exec'
: 一連の文からなる'eval'
: 単一の式'single'
: 単一の対話的文サンプル
# 文
source = '''a = 1
b = 2
ab = a + b
'''
# sourceをコンパイルしてコードオブジェクトを生成
code_obj = compile(source, '<string>', 'exec')
# コードオブジェクトの実行
exec(code_obj)
print(a, b, ab) # コードオブジェクトを実行したことで生成された変数を呼び出す
# 単一の式
source = '1 + 2'
# sourceをコンパイルしてコードオブジェクトを生成
code_obj = compile(source, '<string>', 'eval')
# コードオブジェクトの実行
print(eval(code_obj))
実行結果
1 2 3
3
参考compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
文字列の式を評価できます。
eval(expression[, globals[, locals]])
サンプル
a = 1
b = 2
r = eval('a + b')
print(r)
実行結果
3
文字列の文をコードとして実行できます。
exec(object[, globals[, locals]])
サンプル
obj = '''a = 1
b = 2
c = a + b
'''
exec(obj)
print(a, b, c)
実行結果
1 2 3
複素数を生成したり文字列や数を複素数に変換できます。
complex(real, imag)
サンプル
c = complex('1j')
print(f"complex('1j') = {c}")
c = complex()
print(f"complex() = {c}")
c = complex(1)
print(f"complex(1) = {c}")
c = complex(1, 2)
print(f"complex(1, 2) = {c}")
実行結果
complex('1j') = 1j
complex() = 0j
complex(1) = (1+0j)
complex(1, 2) = (1+2j)
空(0.0)の浮動小数点数を生成します。引数が指定されている場合はその値を float
型 に変換します。
float([x])
サンプル
f = float()
print(f'引数無し: {f}')
f = float('3.14')
print(f"'3.14': {f}")
f = float('3.14e-2')
print(f"'3.14e-2': {f}")
f = float(1)
print(f"1: {f}")
実行結果
引数無し: 0.0
'3.14': 3.14
'3.14e-2': 0.0314
1: 1.0
整数オブジェクトを返します。
int(x)
サンプル
# 空
i = int()
print(f'int(): {i}')
# 文字列
i = int('2')
print(f"int('2'): {i}")
# 浮動小数点数
i = int(3.14)
print(f'int(3.14): {i}')
実行結果
int(): 0
int('2'): 2
int(3.14): 3
オブジェクトから指定された属性を削除できます。
delattr(object, name)
サンプル
# 空のクラス
class Obj:
pass
# インスタンス化
obj = Obj()
# 動的に属性の追加
obj.arg = 1
# 属性の出力
print(dir(obj))
# argの削除
delattr(obj, 'arg')
# 属性の出力
print(dir(obj))
実行結果
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'arg']
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
任意のオブジェクトから指定した名前の属性の値を取得します。指定された属性がない場合はデフォルトの値を渡しておくことでその値を返します。デフォルト値がない場合は AttributeError
が送出されます。
getattr(object, name, default)
サンプル
# rangeクラスのインスタンス生成
r = range(3)
# 属性の値の取得
stop = getattr(r, 'stop')
print(stop)
# 定義されていない属性(デフォルト有り)
length = getattr(r, 'length', len(r))
print(length)
# 定義されていない属性(デフォルト無し)
length = getattr(r, 'length')
print(length)
実行結果
3
3
AttributeError: 'range' object has no attribute 'length'
任意のオブジェクトに指定した文字列の属性が存在していれば True
、存在していなければ False
を返します。
hasattr(object, name)
サンプル
# rangeクラスのインスタンス生成
r = range(3)
# 定義されている属性
print(hasattr(r, 'stop'))
# 定義されていない属性
print(hasattr(r, 'length'))
実行結果
True
False
任意のオブジェクトの属性を変更・追加することができます。
setattr(object, name, value)
サンプル
class Object:
pass
obj = Object()
setattr(obj, 'string', 'objです')
print(obj.string)
実行結果
objです
辞書を生成します。
dict(**kwarg)
dict(mapping, **kwarg)
dict(iterable, **kwarg)
サンプル
d = dict()
print(d)
d = dict(one=1, two=2, three=3)
print(d)
d = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
print(d)
d = dict([('one', 1), ('two', 2), ('three', 3)])
print(d)
実行結果
{}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
リスト型のオブジェクトを返します。
list(iterable)
サンプル
l = list()
print(l)
# setから変換
l = list({1, 2, 3})
print(l)
実行結果
[]
[1, 2, 3]
セット型のオブジェクトを生成して返します。
set(iterable)
サンプル
s = set([1, 2, 3])
# 重複する要素を持てない
s.add(1)
# 和集合
print(s.union([2, 3, 4]))
実行結果
{1, 2, 3, 4}
frozenset
オブジェクト を返します。frozenset は、イミュータブル(不変)な set
です。
frozenset(iterable)
サンプル
fs = frozenset([1, 2, 3])
# 和集合
union = fs.union({2, 3, 4})
print(union)
実行結果
frozenset({1, 2, 3, 4})
タプル型のオブジェクトを返します。
tuple(iterable)
サンプル
t = tuple([1, 2, 3])
print(t)
print(type(t))
実行結果
(1, 2, 3)
<class 'tuple'>
属性名を取得します。引数無しの場合は自分自身の属性を取得し、引数有りの場合は引数に指定したオブジェクトの属性を取得します。
dir(object)
サンプル
print(dir())
# 新たに属性を生成
a = 10
l = []
print(dir())
# タプルの属性
print(dir(tuple))
実行結果
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'l']
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
商とあまりをまとめて計算できます。
divmod(a, b)
サンプル
a = 3
b = 2
d, m = divmod(a, b)
print(f'{a} / {b} = {d}あまり{m}')
a = 4
b = 2
d, m = divmod(a, b)
print(f'{a} / {b} = {d}あまり{m}')
実行結果
3 / 2 = 1あまり1
4 / 2 = 2あまり0
ループ処理可能な enumrate
オブジェクトを返します。
引数にはイテラブルオブジェクトを取ります。
enumrate
オブジェクトは、ループ処理される際に引数で受け取ったイテラブルオブジェクトの要素とカウントを含んだタプルを返します。
start
引数を指定することでカウントの初期値を変更できます。
enumrate(iterable, start=0)
サンプル
l = ['a', 'b', 'c']
e = enumerate(l)
print(list(e))
for i, val in enumerate(l, start=1):
print(i, val)
実行結果
[(0, 'a'), (1, 'b'), (2, 'c')]
1 a
2 b
3 c
引数で受け取ったイテラブルオブジェクトの要素を条件によって抽出することができます。function
引数 が None
ならイテラブルオブジェクトの False
の要素を全て除去できます。
filter(function, iterable)
サンプル
l = [0, 1, 2, 3, 4, 5, 6]
l = filter(lambda x: x % 2 == 0, l)
print(list(l))
l = [0, '', [], None]
l = filter(None, l)
print(list(l))
実行結果
[0, 2, 4, 6]
[]
value
引数 に渡された値を書式指定文字列によって書式化します。
format(value, format_spec)
サンプル
# 2進数化
val = 8
print(format(val, 'b'))
# 中央寄せ
val = '文字列'
print(format(val, '!^8'))
実行結果
1000
!!文字列!!!
Link書式指定文字列の文法 — Python 3.9.1 ドキュメント
グローバル領域の属性を全て辞書形式で取得できます。
globals()
サンプル
def func():
pass
arg = '変数'
print(globals())
実行結果
{'__name__': '__main__', '__doc__': None, ...(省略), 'func': <function func at 0x10f57eb00>, 'arg': '変数'}
ローカル領域の属性を全て辞書形式で取得できます。
locals()
サンプル
def func():
arg = 1
print(locals())
func()
実行結果
{'arg': 1}
オブジェクトのハッシュ値を返します。
hash(object)
サンプル
print(hash(1))
print(hash('a'))
print(hash('a'))
実行結果
1
7360294545582337210
7360294545582337210
Linkバイト型のデータをハッシュ化する
ヘルプシステムを起動します。引数を指定しなかった場合は対話的ヘルプシステムをコンソール上に起動します。
help(object)
サンプル
help(abs)
実行結果
Help on built-in function abs in module builtins:
abs(x, /)
Return the absolute value of the argument.
オブジェクトの識別値を返します。
id(object)
サンプル
obj = object()
print(id(obj))
r = range(3)
print(id(r))
実行結果
4402905200
4404231888
ターミナルやコマンドプロンプトから値を受け取ることができます。引数に文字列を指定することで標準出力にその値を出力してから値を受け取ります。
input(prompt)
サンプル
val = input('val: ')
print(val)
実行結果
val: valです
valです
任意のインスタンスが指定したクラスのインスタンス化どうか、またはサブクラスのインスタンスかを判定します。
isinstance(object, classinfo)
サンプル
obj = object()
print(isinstance(obj, object))
l = []
print(isinstance(l, object))
実行結果
True
True
任意のクラスが指定したクラスのサブクラスかどうかを判定できます。
issubclass(class, classinfo)
サンプル
print(isinstance(object, object))
print(issubclass(list, object))
実行結果
True
True
イテレータオブジェクトを返します。引数を2つ指定した場合、第一引数の呼び出し可能オブジェクトを繰り返し呼び出し、第二引数に指定した値が返されるとループが終了します。
iter(object, sentinel)
サンプル
print(iter([1, 2, 3]))
実行結果
<list_iterator object at 0x1079eb410>
引数を2つ指定する
以下のコードは、exit
と入力することで終了できます。
l = []
for val in iter(input, 'exit'):
l.append(val)
print(l)
実行結果
a
b
c
exit
['a', 'b', 'c']
引数に指定したオブジェクトの長さを取得できます。
len(s)
サンプル
l = [1, 2, 3]
print(len(l))
s = 'abcde'
print(len(s))
実行結果
3
5
第一引数で指定した関数を第二引数で指定したイテラブルオブジェクトの各要素に適用し、得られた結果のイテレータを返します。
map(function, iterable)
サンプル
r = map(abs, [1, -2, 3, -4])
print(list(r))
# ラムダ式を使ってみる
r = map(lambda x: x / 2, [1, 2, 3, 4])
print(list(r))
実行結果
[1, 2, 3, 4]
[0.5, 1.0, 1.5, 2.0]
渡された複数の値の中で最大のものを返します。
max(iterable, key, default)
または
max(arg1, arg2, ..., argN, key)
サンプル
# イテラブルオブジェクトを渡す
m = max([8, 1, 9, 2])
print(m)
# バラバラに値を渡す
m = max(8, 1, 9, 2)
print(m)
# keyを指定する
l = [range(2), range(3), range(1)]
m = max(l, key=lambda li: li.stop)
print(m)
実行結果
9
9
range(0, 3)
渡された複数の値の中で最小のものを返します。
map(iterable, key, default)
または
map(arg1, arg2, ..., argN, key)
サンプル
# イテラブルオブジェクトを渡す
m = min([8, 1, 9, 2])
print(m)
# バラバラに値を渡す
m = min(8, 1, 9, 2)
print(m)
# keyを指定する
l = [range(2), range(3), range(1)]
m = min(l, key=lambda li: li.stop)
print(m)
実行結果
1
1
range(0, 1)
任意のオブジェクトからメモリビューオブジェクトを生成します。引数には bytes、bytearray などのバッファプロトコルをサポートしているオブジェクトを指定します。
memoryview(obj)
サンプル
mv = memoryview(b'abcde')
print(mv[0])
print(mv[-1])
実行結果
97
101
参考メモリビュー
イテレータの __next__
メソッド を呼び出して次の要素を取得します。次の要素がなければ StopIteration
が送出されます。デフォルト値が設定されていればその値が返されます。
next(iterator, default)
サンプル
it = iter([1, 2, 3])
print(next(it))
print(next(it))
print(next(it))
print(next(it, 'デフォルト値'))
print(next(it))
実行結果
1
2
3
デフォルト値
StopIteration
全てのクラスの基底クラスであるオブジェクトクラスを生成します。
object()
サンプル
obj = object()
print(obj)
実行結果
<object object at 0x10211a070>
任意のファイルを開いてファイルオブジェクトを返します。ファイルオブジェクトを使うことでファイルを読み込んだり書き込んだりすることができます。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
サンプル
file_name = 'test.txt'
# 書き込み
f = open(file_name, 'w')
f.write('テスト')
f.close()
# コンテキストマネージャを利用した読み込み
with open(file_name, 'r') as f:
print(f.read())
実行結果
テスト
任意の累乗を計算できます。base
の exp
乗 を返します。mod
引数 を指定することでbase
の exp
乗 % mod
を返します。
pow(base, exp, mod)
サンプル
# 2の3乗
p = pow(2, 3)
print(p)
# 2の3乗 % 5 と等価
p = pow(2, 3, 5)
print(p)
実行結果
8
3
任意のオブジェクトを標準出力に出力します。
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
サンプル
# 標準出力に出力
print('Hello World')
# 区切り文字の指定
print('a', 'b', 'c', sep='/')
# 末尾の文字の指定
print('data', end=': ')
print('abc')
# 出力先の変更
f = open('test.txt', 'w')
print('printで出力', file=f)
f.close()
実行結果
Hello World
a/b/c
data: abc
クラスにプロパティを定義できます。
property(fget=None, fset=None, fdel=None, doc=None)
または
@property
サンプル
class Object:
def __init__(self, arg):
self.__arg = arg
# setter
def _set_arg(self, arg):
self.__arg = arg
# getter
def _get_arg(self):
return self.__arg
# deleter
def _del_arg(self):
self.__arg = None
# プロパティの作成(引数に getter, setter, deleterの順で渡す)
arg = property(_get_arg, _set_arg, _del_arg)
# インスタンス化
obj = Object(1)
# getter呼び出し
print(obj.arg)
# setter呼び出し
obj.arg = 5
# deleter呼び出し
del obj.arg
# getter呼び出し
print(obj.arg)
実行結果
1
None
range
型 のオブジェクトを生成します。
range(stop)
または
range(start, stop, step)
サンプル
for i in range(3):
print(i)
実行結果
0
1
2
要素を逆順に返すイテレータオブジェクトを返します。
reversed(seq)
サンプル
l = [8, 1, 9, 2]
r_l = reversed(l)
print(list(r_l))
実行結果
[2, 9, 1, 8]
イテラブルオブジェクトの要素を並び替えたリストを返します。
sorted(iterable, *, key=None, reverse=False)
サンプル
l = [8, 1, 9, 2]
# 昇順
s_l = sorted(l)
print(s_l)
# 降順
s_l = sorted(l, reverse=True)
print(s_l)
# keyの指定
s_l = sorted(l, key=lambda x: x % 2)
print(s_l)
実行結果
[1, 2, 8, 9]
[9, 8, 2, 1]
[8, 2, 1, 9]
引数に渡された値の小数を丸めます。
round(number, ndigits)
サンプル
f = 3.14
print(round(f))
f = 2.5
print(round(f))
実行結果
3
2
スライスオブジェクトを生成して返します。引数には range
関数 と同じ値を取ります。
slice(stop)
または
slice(start, stop, step)
サンプル
l = [1, 2, 3, 4, 5, 6]
# l[:3] と同様
print(l[slice(3)])
# l[1:6:2] と同様
print(l[slice(1, 6, 2)])
実行結果
[1, 2, 3]
[2, 4, 6]
イテラブルオブジェクトの要素の合計を返します。
sum(iterable, start=0)
サンプル
# 1 + 2 + 3
r = sum([1, 2, 3])
print(r)
# 初期値を指定
r = sum([1, 2, 3], 100)
print(r)
実行結果
6
106
親クラスにアクセスできます。
super()
サンプル
class A:
def __init__(self):
print('Aクラスのコンストラクタが呼び出されました!')
class B(A):
def __init__(self):
super().__init__()
print('Bクラスのコンストラクタが呼び出されました!')
b = B()
実行結果
Aクラスのコンストラクタが呼び出されました!
Bクラスのコンストラクタが呼び出されました!
オブジェクトの型を確認することができます。引数を3つ指定することで動的にクラスを定義することができます。
type(object)
または
type(name, bases, dict)
サンプル
print(type(1))
print(type('文字'))
実行結果
<class 'int'>
<class 'str'>
動的にクラスを定義する
引数にはクラス名、基底クラス、属性の定義を渡します。
# TestClassを動的に定義
TestClass = type('TestType', (object,), dict(arg=1))
# インスタンス化
tc = TestClass()
print(tc)
# クラス変数にアクセス
print(TestClass.arg)
実行結果
<__main__.TestType object at 0x10c47c490>
1
オブジェクトの __dict__
属性 を辞書型で返します。引数を指定しないことで locals
関数 と同じようにローカル領域の属性を取得できます。
vars(object)
サンプル
class Object:
a = 1
def __init__(self):
self.b = 2
self._c = 3
self.__d = 4
e = 5
def f(self):
pass
@property
def d(self):
return self.__d
@d.setter
def d(self, other):
self.__d = other
obj = Object()
print(vars(obj))
実行結果
{'b': 2, '_c': 3, '_Object__d': 4}
locals関数と同じ
print(vars() == locals())
実行結果
True
複数のイテラブルオブジェクトの要素をまとめたイテレータを返します。
zip(*iterables)
サンプル
l = [1, 2, 3]
t = (4, 5, 6, 7)
lt = zip(l, t)
print(list(lt))
実行結果
[(1, 4), (2, 5), (3, 6)]
この関数は import
文 により呼び出されます。
この関数を直接呼び出すことは推奨されていないので代わりにimportlib.import_module()を使ってください。
この記事では、Python の組み込み関数について簡単に解説しました。
Python には、とても多くの組み込み関数が用意されていて便利ですが、まとめて覚えるのは大変なので使いかながら慣れていきましょう!
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ
参考組み込み関数
View Comments