Pythonの組み込み関数の分かりやすさ重視のまとめ
pythonにはちゃんとした公式ドキュメントがあり必要な情報が網羅的に載っています。そこでpythonをより深く理解するために数日前から公式ドキュメントを読み始めました。
ですがチュートリアル(Python チュートリアル — Python 3.6.5 ドキュメント)を読み終わり、ライブラリーリファレンスの組み込み関数のページ(2. 組み込み関数 — Python 3.6.5 ドキュメント)を読み始めたところ一気に難易度が上がって詰まってしまいました。
この組み込み関数のページはとても網羅的で質の高い情報だと思うのですが、
- 機械的なアルファベット順
- クラス名も組み込み関数と一緒くたにしている
という点で初学者には理解が難しいと思います。
そこでpython3.6.5版にある組み込み関数すべてについて、なるべく似た関数をグループにして紹介してみます。入れなくてもいい引数などは省略しているので組み込み関数の全ての機能は紹介しきれていませんが、ぜひ参考にしてみてください。(ちなみに全部で68個あります)
もし分からない用語があったらこちらを見てください。
1 特定の組み込み型を作るためのもの 16個
- bool
bool値を返す
- bytearray
新しいバイト配列を返す
- bytes
bytes型を返す
- complex
complex型(複素数型)を返す
- dict
ディクショナリ型を返す
- float
float型(浮動小数点型)を返す
- frozenset
frozenset型(イミュータブル、つまり変更不可能な)セット型を返す
- int
int型を返す
イテレータ型を返す
- list
リスト型を返す
- memoryview
メモリービュー型を返す
メモリービュー型はbyte配列が使っているメモリ領域を使うために必要らしいが初心者には必要なさそう。
- object
特徴を持たない新しいオブジェクトを返す。object型は全てのクラスの基底クラス。
- set
set型を返す
- slice
range(start,stop,step)で指定されるインデクスの集合であるスライス型を返す
- str
str型(一般的な文字列型)を返す
- tuple
タプル型を返す
2 基本的 or 便利な操作 9個
- compile
- dir
引数がない時は現在のローカルディレクトリの名前のリストを、ある時はそのオブジェクトの有効な属性のリストを返す。(めっちゃ便利。みんなのpythonでは魔法の関数と呼ばれていた)
- format
文字列への変数の埋め込みをする。
- help
組み込みヘルプシステムを起動する。引数に型の名前や関数の名前を入れると英語の説明文が出てくる。
- input
ユーザーが入力したデータを受け付けるための関数。printが標準出力として用意されているのに対し、inputは標準入力として用意されている。
- open(file,mode)
ファイルを開き、対応するファイル型を返す。この関数は引数modeに入れるアルファベットを覚える必要があるのでちょっと面倒。
r = read = 読み込み
w = write = 新しいファイルに書き込み
a =add =既存のファイルの末尾に書き込み
+ =plus = r,w,aの後につけると読み込みと書き込み両方できるようになる
引数に入力されたオブジェクトを表示する。pythonの勉強を始めた人はみんな一番最初にこれをやると思う。
- super
メソッドの呼び出しを引数のtypeの親または兄弟クラスに委譲する。クラスの中でオーバーライドされた継承メソッドにアクセスするのに便利。
- type
オブジェクトの型を返す。
3 真偽値を返すもの(分類に使うことが多い) 6個
- all(iterable)
引数のイテラブルの値がすべて真ならTrue、一つでも違ったらFalseを返す。
- any(iterable)
引数のイテラブルの値が一つでも真ならTrue、すべて偽ならFalseを返す。
- callable(object)
引数が呼び出し可能なもの(関数、メソッド、クラスなど)ならTrue,呼び出し不可能なもの(文字列、モジュールなど)ならFalseを返す。
- hashattr(object,name)
nameがobjectの属性ならTrue,違ければFalseを返す。
- isinstance(object,class)
objectがclassのインスタンスならTrue,違ければFalseを返す。
- issubclass(classA,classB)
classAがclassBのサブクラスならTrue,違ければFalseを返す。
4 数の操作に関するもの 7個
- abs
絶対値を返す。
- bin
0bから始まる2進数での値を返す。英語では2進法をbinaryというらしい。
- divmod(a,b)
a/b(a割るb)の商と余りからなる対を返す。
- hex
0xから始まる16進数での値を返す。英語では16進法をhexadecimalというらしい。
- oct
0oがついた8進数での値を返す。英語では8進法をoctalというらしい。
- pow(a,b)
aのb乗を返す。
- round
小数を丸める。
5 イテラブルの操作に関するもの 12個
- enumerate(iterable)
引数のイテラブルのインデックスと値からなるenumerateオブジェクトを返す。forループの時に使うととても便利。
- filter(function,iterable)
イテラブルの要素のうち、関数が真になるものだけでiterableを構築する。(イテラブルをフィルターにかける)。関数を受け取る関数のため、mapと並んで高階関数と呼ばれる。
- len(sequence or collection)
オブジェクトの長さ・要素数を返す。
- map(function,iterable)
イテラブルの全ての要素に関数を適用し、それぞれの結果を返していくイテレータを適用する。関数を受け取る関数のため、filterと並んで高階関数と呼ばれる。map関数と同じことはリスト内包表記を使うことでもできる。
- max
イテラブルの中で最大の要素を返す。
- min
イテラブルの中で最小の要素を返す。
- next
イテレータの次の要素を返す。
- range(start,stop,[step])
数のイミュータブルなシーケンスを返す。
- reversed(sequence)
要素を逆順に取り出すイテレータを返す。
- sorted(iterable)
イテラブルの要素を並び替えた新たなリストを返す。
- sum(iterable)
イテラブルの合計を返す。
- zip(*iterables)
それぞれのイテラブルから要素を集めたイテレータを作る。引数についている*は引数を何個つけてもいい(可変長引数)ことを表している。
6属性の操作 5個
- delattr(object,name)
属性を削除する。
- getattr(object,name)
オブジェクトの指定された属性の値を返す。
- setattr(object,name,value)
指定したオブジェクトが許せば値を属性に関連づける。
- property
自分で定義したオブジェクトに独自のアクセサを持った属性を追加する
- vars(object)
__dict__属性を返す。(__dict__は属性を保存するための辞書オブジェクト)
7その他 13個
エンコード・文字列関係
- ascii(object)
reprと同様に内部処理用の文字列(eval関数で式として評価した時に同じ値を持つようなオブジェクトを返す文字列)を返し、非ascii文字はエスケープする。
- chr(整数)
Unicodeコードポイントがその数である文字列を返す。
- ord
1文字のUnicode文字を表す文字列に対し、その文字のUnicodeコードポイントを返す。
- repr(object)
asciiと同様に内部処理用の文字列(eval関数で式として評価した時に同じ値を持つようなオブジェクトを返す文字列)を返す。
文字列をpythonコードとして扱う
- eval
文字列を式として評価する。
- exec
文字列を文として実行する。
シンボルテーブル(プログラムのソースコード内の名前とその内容となるデータがセットになった情報のテーブル)を返す
- globals()
現在のグローバルシンボルテーブルを表す辞書を返す。
- locals()
現在のローカルシンボルテーブルを表す辞書を返す。
オブジェクトの情報を返す
- hash(object)
オブジェクトのハッシュ値を返す。ハッシュ値は整数であり、辞書を検索する際に辞書のキーを高速に比較するために使われる。
- id(object)
pythonのオブジェクトがそれぞれ持つ固有の番号(識別値)を返す。
メソッドの変換(デコレータ)
- @classmethod
メソッドをクラスメソッドに変換する。クラスメソッドは第一引数にクラスオブジェクトを受け取るため、インスタンス化しなくても呼び出せるメソッド。クラスそのものに何かの操作をする時に使う。
class C:
@classmethod
def f(cls,引数, ...):
のようなイディオムを使う。(公式ドキュメントより)
- @staticmethod
メソッドを静的メソッドに変換する。静的メソッドは第一引数に何も(クラスオブジェクトもインスタンスも)必要としないメソッド。できることは@classmethodとあんまり変わらないっぽい。
高度な関数
- __import__
「これは日常のPythonプログラミングでは必要ない高等な関数です」と公式ドキュメント二かあkれていたので省略。