Pythonの組み込み関数の分かりやすさ重視のまとめ

 pythonにはちゃんとした公式ドキュメントがあり必要な情報が網羅的に載っています。そこでpythonをより深く理解するために数日前から公式ドキュメントを読み始めました。

 ですがチュートリアル(Python チュートリアル — Python 3.6.5 ドキュメント)を読み終わり、ライブラリーリファレンスの組み込み関数のページ(2. 組み込み関数 — Python 3.6.5 ドキュメント)を読み始めたところ一気に難易度が上がって詰まってしまいました。

 この組み込み関数のページはとても網羅的で質の高い情報だと思うのですが、

  • 機械的なアルファベット順
  • クラス名も組み込み関数と一緒くたにしている

という点で初学者には理解が難しいと思います。

そこでpython3.6.5版にある組み込み関数すべてについて、なるべく似た関数をグループにして紹介してみます。入れなくてもいい引数などは省略しているので組み込み関数の全ての機能は紹介しきれていませんが、ぜひ参考にしてみてください。(ちなみに全部で68個あります)

もし分からない用語があったらこちらを見てください。

imasak.hatenablog.com

 

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の後につけると読み込みと書き込み両方できるようになる

  • print

引数に入力されたオブジェクトを表示する。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れていたので省略。