【mock】外部モジュールのメソッドの動作をpatchで変更する方法 – 第一引数の書き方
テスト作成時に、 クラス属性やモジュール属性、例えば組み込み関数や、テスト対象モジュールにあるインスタンス化されるクラスに対してパッチしたいことがあります。 その様な時は、unittest.mockにあるpatchを使っ...
テスト作成時に、 クラス属性やモジュール属性、例えば組み込み関数や、テスト対象モジュールにあるインスタンス化されるクラスに対してパッチしたいことがあります。 その様な時は、unittest.mockにあるpatchを使っ...
GitHubで最も人気のあるパイソンで書かれたデザインパターン集は faif/python-patterns です。フォークス数は6.5k、スター数は34.5k(2022年7月現在)です。 有名なGoFのデザインパターン...
今回はToolzの中からFunctoolzを紹介します。 サンプルコードは全て”from toolz.functoolz import *”の様なインポート文を省略しています。 identity(...
今回はToolzの中からDicttoolzを紹介します。Dicttoolzにあるメソッドはどれも使う場面が多そうだと思ったため、全て紹介します。 サンプルコードは全て”from toolz.dicttoolz...
今回はToolzのAPIの中からItertoolzの関数をいくつか紹介します。 サンプルコードは”from toolz.itertoolz import *”の様に扱う関数をインポートしてある前提で書いてあります。 イテ...
今回は関数型プログラミングの中で頻繁に登場するカリー化というテクニックを紹介します。 カリー化はpartial関数のシンタックスシュガーであるためpartial関数について知っていれば難しくはありません。partialの...
はじめに Toolzは現在の関数型言語の標準ライブラリから大きな影響を受けて作られました。標準ライブラリのitertoolsやfunctoolsを拡張するようなモジュールです。 実際、itertoolsやfunctool...
前回の記事でmap関数について説明しました。今回はmap関数以外の便利な高階関数を以下の3つ紹介します。 組み込み関数:filterfunctoolsモジュール:reduce, partial filter(predic...
イテレータとはリストやタプルのようなシーケンスを扱う手法の一つです。 シーケンスを扱うときは、for文を使って先頭の要素から順番に処理をしていくことが多いです。先頭の要素を処理し終えた後は、2つ目の要素の処理をし、3つ目...
高階関数とは? 高階関数とは関数を引数として受け取ったり、関数を戻り値とするような関数のことです。 高階関数のメリットを事例を元に紹介します。 ①文字列のリストの全ての要素にupper関数を適用し、全て大文字にした文字列...
はじめに 私は関数型プログラミングがオブジェクト指向と比べられるほど可能性のあるコーディング手法だと知り勉強を始めました。しかし、Pythonメインに関数型プログラミングを説明する情報が少なく、LISPやJavaScri...
関数型プログラミングで登場する用語、”参照透過性”、”副作用”、”純粋関数”を紹介します。 DRY原則は関数型プログラミング特有の用語ではないですが、大切な概念なので合わせて紹介します。 参照透過性 参照透過性は計算機言...
pythonでは反復処理をするときfor文や内包表記がよく使われますが、再帰関数というテクニックを使って実装することもできます。今回は再帰処理や、再帰関数について説明します。 ちなみに、関数型プログラミング言語の代表であ...
リスト内包表現の基本 シーケンスやイテレート可能なオブジェクトを操作して新たなリストを得たい時は、内包表現を使う事で簡潔に作成できます。 リスト内包表現と同様にset内包表現もあります。 カギ括弧[]とfor, inで次...
任意引数リストや、任意キーワード引数を用いると関数の引数を任意の個数受け付けられるようにできます。 任意個数のキーワード引数 **keywords **keywordsのように変数名に**をつけます。引数リストの一番最後...
デフォルト引数 引数にデフォルト値を設定できます。関数を使うときデフォルト引数は省略できます。 以下の例では、timesに1, msgに’高級’というデフォルト値をセットしています。関数を呼ぶとき...
関数の基本 関数とはある入力に対して決まった出力をする仕組みのことです。関数の定義方法、利用方法について解説します。 使い方の記法 1. 関数名(引数1,引数2…) 2. 変数 = 関数名(引数1,引数2...
for文 基本 for文は任意のシーケンス(リストやタプルなど)から要素を一つずつ取り出して処理ができます。 記法 次の例はplanetsのリストから要素を一つづつ取り出して表示しています。 【結果】 数列を使いたい時 ...
リスト型のメソッドを紹介します。どれもよく使います。 簡易表の後に詳細説明や、例を載せています。 簡易表 list.append(x) 末尾に要素1つ追加 list.extend(iterable) イテラブルの全ての要...
Dictionary 辞書型 リストの要素が数字でインデクス化されているのと異なり、辞書型はキー(key)でインデクス化されます。キー(key):値(value)のペアの集合です。 ディクショナリ 定義方法 {キー1:値...