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れていたので省略。

 

 

 

 

 

 

 

Python勉強中に知った用語の備忘録

  Pythonを勉強する中で知った専門用語の意味をまとめておきます。これからもどんどん追加していく予定です。他の言語では意味が違う場合もあるので注意してください。

 長い記事になるのでWindowsの人はCtrl+F、Macの人はCommand+Fでキーワードを検索すると便利だと思います。

 

・アクセサ

オブジェクト内部の属性に外部からアクセスするために用意されたメソッド。属性を外部から直接参照させないために用意されている。

 

アーカイブ

消してはいけないデータを長期保存するために、専用の保存領域に安全にデータを保存すること。

 

・インターフェース

異なる種類のものを結びつける共有部分。プログラム同士の間でデータのやり取りをする際の形式。

 

・インデクシング

角括弧を伴った表記で要素を参照すること。

 

インタープリタ型言語(スクリプト言語)

PythonRubyJavascriptPHPPerlなどのコードを書いたらそのまま実行できる言語。

 

コンパイル型言語

CやC++Javaなどのコンパイルという手順を踏んで実行ファイルを生成してから実行する言語。コンパイルに時間と手間がかかる分実行が高速であることが特徴。

 

・エミュレート(emulate)

英単語の意味は「競う」と「真似る」があるが、 プログラミングでは真似るの意味で使われる。あるものの動作を真似て、代替として使えるようにすること。擬似的に別の装置の環境を再現することをエミュレーションという。

 

Unicodeエンコード(encode)

文字と数値を互いに変換するためのルール。Unicode 文字列はコードポイントという 0 から 0x10FFFF (10 進表記で 1,114,111) までの数値のシーケンスである。このシーケンスはメモリ上ではバイト (つまり 0 から 255 までの値) の集まりとして表される。Unicode 文字列をバイトのシーケンスとして翻訳することがエンコードでありその規則がエンコーディングである。一番使われるエンコーディングutf-8

 

・オーバーライド

スーパークラスで定義されたメソッドをサブクラスで定義し直し、動作を上書きすること。

 

・クエリ文字列(query string)

WebブラウザがWebサーバーに送信するデータをURLの最後に付け加えたもの。http://example.com/foo/var.php?name1=value1&name2=value2 の下線のところらしい(コピペしました)

 

クリップボード

コピーしたものを一時的に保存しておく場所。新たにコピーの操作を行ったりすると上書きされる。

 

・クローリング

Webページのハイパーリンクをたどって次々にWebページをダウンロードする作業。

 

スクレイピング

ダウンロードしたWebページから必要な情報を抜き出す作業。

 

コマンドライン引数

コマンドラインからプログラムを起動する時にプログラムに渡す値。

 

コンパイル

プログラミング言語で書かれた文字列(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換すること。

 

インタプリタ

プログラミング言語で書かれたソースコードないし中間表現を逐次解釈しながら実行するプログラムのこと。

 

・シーケンス

配列やリストのように順番に処理するためのデータ構造。基本的なシーケンス型には文字列、リスト、タプル、rangeがある。

 

シンタックスシュガー(syntax sugar、糖衣構文)

複雑でわかりにくい書き方と全く同じ意味になるものを、よりシンプルでわかりやすい書き方で書くことができるもの。

 

・シンボルテーブル

プログラムのソースコード内の名前とその内容となるデータがセットになった情報のテーブル。

 

・セマンティクス

ソースコード中で利用されている変数や文が正しく動作するかを判断する基準のこと。

 

・コンテキストマネージャ

with文によって起動され、コードブロックを実行するために必要な入り口および出口の処理を扱うオブジェクト。

 

ハッシュ値

データが改変されていないことを確認するためにある整数値で、辞書を検索する際に辞書のキーを高速に比較するために使われる。

 

・パス名

ディスク上のファイルの場所を示す名前。

 

・フロントエンド

プロセスの最初の工程、つまりユーザーと直接やりとりする部分を指す。バックエンドとはフロントエンドの入力データや指示をもとに、処理を行って結果を出力したり、記録媒体に保存したりする部分であり、フロントエンドとバックエンドの結合部をインタフェースという。

 

・リダイレクト 

元々は「向きを変える」という意味の言葉で、Web ページ を訪れた ユーザー を自動的に別のWeb ページ へ転送すること またはコマンドの出力先を変えること(python関連で出てきたら大体こっちの意味)

 

・ルータ

データを2つ以上の異なるネットワーク間に中継する通信機器。

 

ワイルドカード

任意の文字列を指定する際に使用する特殊文字のこと。

 

・識別子

変数や関数などの名前(に使えるもの)。予約語(Pythonではkeywordとも呼ばれる)は識別子に使うことができない。Python3.3ではTrue,is,return,ifなどの33単語が予約語になっている。

 

・attr

attribute(属性)の略。pythonにはdelattr(属性の削除)、setattr(属性の作成)という組込関数がある。

 

API(application programing interface)

主にウェブサービスを利用する時に必要になる、コンピュータ同士が相互に連携するための仕組み。

 

・argc 

argument count(引数の個数)の略

 

・argv 

argument vector(引数の配列)の略

 

・stdin 

standard input(標準入力)の略

 

・stdout

standard output(標準出力)の略

 

・stderr

standard error(標準エラー)の略

 

・urllib

pythonの標準ライブラリ。URL+libraryという意味。

 

・smtplib

pythonの標準ライブラリ。Simple Mail Transfer Protocol(メールの送信の仕組み)+libraryという意味。

 

・parse(パース)

文法に従って構文を解析すること。

 

・serializing(シリアライズ)

標準モジュール jsonPython のデータ階層を取り、文字列表現に変換すること。(pyrthonの公式ドキュメントにはこう書いてありましたが一般的な意味は違うようなので注意してください)

 

・pointer(ポインタ)

変数の格納場所(アドレス)を指し示す変数

 

・refactoring(リファクタリング)

プログラムの外部から見た動作を変えずにソースコードの内部構造を整理すること

 

・**kwargs

キーワード指定の可変長引数のこと。おそらく由来はkeyword arguments。

 

・enumerate

数え上げるという意味。pythonの組込関数の一つ。

 

・foo

変数名の例をあげる時に最初に使われることが多い意味を持たない言葉。2番目はbar、3番目はbaz。

 

・prompt

動作を促すマークのこと。ターミナルで入力待ちの時に出ているマークが代表的な例。

 

I/O

input/outputの略。入出力のこと。

 

VM

virtual machineの略。仮想マシンのこと。

 

Apache

世界で一番人気なWebサーバーのソフトウェア。

 

basic認証

httpに元々用意されている認証(ログイン)機能。ウェブサイトへのアクセスを制限する方法の一つ。

 

・PaaS(パース、Platform as a Service)

Cloudサービス(インターネットに接続した状態で使うサービス)の一種で、サーバやOS、データベース、ネットワークなどをインターネット越しにできるようにするもの。

 

・heroku(ヘロク)

代表的なPaaS。アプリケーションを公開するのに必要な面倒な作業をやってくれるので人気がある。JavaRubyPythonも使える。

 

XML

文章の見た目や構造を記述するためのマークアップ言語の一種。HTMLやMarkdownの仲間。

 

XPath

XML文章中の要素、属性値などを指定するための言語。HTMLもXMLの一部とみなしてHTML中の要素を指定することができる。Pythonではクローリングをする時に使う。

 

Hadoop(ハドゥープ)

めちゃくちゃ大きいデータを分散させて処理するためのフレームワーク

 

HTTPステータスコード

HTTPにおいてWebサーバからのレスポンスの意味を表現する3桁の数字からなるコード。百の位が2なら成功、4なら失敗などの決まりがある。

 

・substring(サブストリング)

部分文字列のこと。文字列の中の一部を指すときにsubstringやsubと書いてあることが多い。

 

・delimiter(デリミタ)

区切り文字のこと。

 

 

 

 

 

正規表現のまとめ

今日は正規表現について調べたのでまとめます。

正規表現は英語でregular expressionsと言ってこれがpythonの標準ライブラリのreの元になっています。正規表現(正則表現ともいう)はたくさんの文字列をまとめて表すためのものです。

 

正規表現のなかでは、普通のローマ字や数字はそのまま扱われますが、いくつかの記号(これを特殊文字という)は特別な意味を持ちます。特殊文字は全部でたった11個しかないので簡単に覚えられます。ここではその一覧と簡単な意味をまとめました。

 

  • ^   =補集合
  • [ ]  =文字クラス
  • \   +アルファベット=色々な意味(どのアルファベットかで異なる)
  • \   +特殊文字 =エスケープ(特殊文字をそのままの意味で使わせる)
  • { }  =カッコ内の数が繰り返しの回数になる
  • .   =任意の一文字
  • $  =末尾
  • *  =繰り返し(0回以上)
  • ?  =最長一致から最短一致へ変更
  • +  =一個以上
  • |  = もしくは(和集合)
  • (  )  =グループ化

いかがだったでしょうか。実際にはこんな単純じゃないんですがこの大まかな意味だけ暗記しておけば勉強していて正規表現が出てきてもついていけると思います!

みんなのPython第4版参照ページ数

僕はまだPythonの勉強を初めて2週間ぐらいなので、すごい基本的なことも覚えてなくて本で調べることがあります。その時に一々めくって探さずに済むように、みんなのPythonでよく参照しているページをまとめておきます。

 

超基本的なこと

  • リストの基本  p64〜p75
  • ディクショナリの基本  p114〜p122
  • セットの基本  p123〜p129*1
  • タプルの基本  p130〜p134
  • 組み込み型のデータ型の特徴  p157〜p162

tableにまとまっている覚えなくていいだろうもの

  • エスケープシーケンス p173
  • formatのオプション p180
  • ファイル関連の操作 p217〜p228
  • 特殊メソッド p286〜p294
  • モジュールとクラスの対応 p323
  • エラーのまとめ p344〜p347
  • 正規表現 p368〜p369

*1:setは|で和集合、_で差集合、&で交わり、^で対象差というわかりにくい演算子があります