python

Python

Pythonで知っておくべき10個の概念

Pythonは高水準のオブジェクト指向プログラミング言語であり、その汎用性、動的性質、堅牢性、学習しやすい性質から、多くの学生や専門家によって選ばれています。

最近では、JavaScriptに次いで2番目に人気のある言語となり、機械学習、データサイエンス、ウェブ開発、分析、自動化、テスト、人工知能など、ほとんどすべての技術分野で使用することができます。

Pythonの学習は、JavaやC++などの他の高水準のオブジェクト指向プログラミング言語と比較して簡単ですが、堅牢で簡潔、最適化され効率的かつ正規化されたコードを開発する際に便利なコンセプトを持っています。

これらの概念をコードに使用することで、バグを減らし、効率を向上させることができ、熟練したPythonプログラマーになることができます。それでは、これらの概念を1つずつ見ていきましょう!

Map Function

Pythonにはmap()という関数が組み込まれており、ループ処理を明示的に行うことなく、イテレート可能な要素をすべて処理することができます。

この関数を使用すると、イテレータであるマップオブジェクトが返されます。このマップオブジェクトは、イテラブルに存在するすべての要素に指定された関数を適用した結果です。

関数の定義 – required_answer = map(function, iterable)

map() 関数は 2 つの引数を取ります。

  1. 第1引数は、反復処理可能な要素に適用される関数
  2. 第2引数は、関数がマッピングされるイテラブル自身

itertools

Pythonにはitertoolsという素晴らしい標準ライブラリがあり、遅延評価によるクリーンで高速、かつメモリ効率の良いコードを書くのに役立つ関数を多数提供しています。

これは様々なイテレータのビルディングブロックを実装したPythonモジュールで、一緒になって「イテレータ代数」を形成し、Python言語で効率的にツールを構築することを可能にしています。

itertoolsの関数は、イテレータそのものを操作し、より複雑なイテレータを返します。

itertoolsに含まれる関数の例としては、count(), cycle(), repeat(), accumulate(), product(), permutations(), combinations() などがあり、それぞれが独自の引数のセットを取り、それに対して処理を行います。

結果は、従来のコードを使用したときに達成された結果と比較して、はるかに速く生成されます。

Lambda Function

Pythonのラムダ関数は、名前を持たず、1行のコードに含まれるため、小さな匿名関数です。

Pythonで関数を定義するには「def」というキーワードが使われますが、ラムダ関数は「lambda」というキーワードで定義します。

引数はいくつでも取れますが、式の数は1つしか取れません。

単純な論理演算のためにコードを簡潔で読みやすくし、関数を1回だけ使う必要があるときに使うのが最適です。

関数の定義 - required_answer = lambda ..arguments : expression

Exception Handling

例外は、プログラムの実行時に発生するエラーの一種で、プログラムの正常な流れを変えてしまうものです。

例としては、数値を0で割ることや、イテラブルの枠外にあるインデックスを参照することなどが挙げられます。

Pythonでは例外を処理するためにtry、except、finallyを使用します。

tryは潜在的にエラーを投げる可能性のあるコードブロックを包むために、exceptは例外が発生したときに実行されるコードブロックを包んでエラーを処理するために、finallyは何があってもコードを実行させるために使用されるキーワードです。

Decorators

デコレータはPythonのメタプログラミングの一部で、コンパイル時に元の構造を変えずに既存のコードに追加の機能を追加するために使用されます。

Pythonの通常の関数に近いもので、呼び出すことができ、呼び出し可能なものを返すことができます。

関数を取り込み、機能を追加して修正し、それを返すのです。データ分析の分野でよく使われるので、動画学習コンテンツなどでPythonの基礎から学ぶこともお勧めです。

Collections

Pythonのコレクションは、セット、タプル、辞書、リストなどの汎用的な内蔵コンテナです。

Python collectionsは、特殊なコンテナデータ型を実装するモジュールです。

  • コレクションには、名前付きフィールドを持つタプルのサブクラスを作成する関数であるnamedtuple()、
  • Pythonのdictは順序を持たないため追加された順序エントリを記憶するdictサブクラスであるOrderedDict、
  • ハッシュ可能オブジェクトを数えるために使用するCounter、
  • 複数のマッピングを単一のビューにするためのChainMap

などが存在します。

Generators

Pythonのジェネレータは、単一の値を返すのではなく、値のシーケンスであるイテレータオブジェクトを返す特殊なタイプの関数です。

これは、独自のイテレータ関数を作成するためのユーティリティです。

ジェネレーター関数では、実行を一時停止するreturnキーワードの代わりにyieldキーワードが使用されています。

yieldとreturnの違いは、returnは関数を終了させますが、yieldは関数の実行を一時停止するだけで、都度、関数に対して値を返します。

Magic Methods

マジックメソッドは、ダンダー(ダブルアンダースコア)メソッドとも呼ばれ、内部で呼び出される特別なタイプの関数です。

ダブルアンダースコアで始まり、ダブルアンダースコアで終わります。

例としては、__add__()、__abs__()、_round__()、_floor__()、_str__()、_trunc__()、_lshift__()など。

number + 5 という表現は number.__add__(5) と同じで、これは内部的に他のメソッドやアクションから呼び出されます。

これらの関数を直接使用することができ、直接使用することにより、毎回関数の呼び出しを減らすことができるため、コードの実行時間を短縮することができます。

Threading

スレッドは、オペレーティングシステムによってスケジューリングされる最小の単位またはプロセスです。

Pythonには、マルチスレッドプログラミングを支援するThreadクラスがあります。

マルチスレッドは、複数のスレッドがタスクを実行するため、主に計算を大幅に高速化するために使用されます。

Pythonでスレッドを実装するには、threadingモジュールを使用する必要があります(threadモジュールは非推奨なので)。

Regular Expressions

Pythonの正規表現またはRegExは、マッチするパターンとして特定の文字を含む表現です。

文字列や文字列の集合が特定のパターンを含んでいるかどうかをチェックするために使用されます。

非常に強力で、エレガントで、簡潔で、しかも高速です。Pythonの正規表現を使用するには、findall()、search()、split()などのパターンマッチに役立つ関数を含むreモジュールをインポートする必要があります。

  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。サービスの分割が重要ですが、まあ昔ながらの方法でやりたいこともありますよね。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-Python