高次関数
- 関数をパラメーターとして受け入れるか、関数を結果として返す関数
コードを表示
コードを表示
入れ子関数
- 内部関数をカプセル化する
- 階乗関数が最初に入力データをチェックするなど、効率を改善します
閉鎖
- 外部関数が関数を返す
1 def nth_power(exponent): 2 def exponent_of(base): 3 return base ** exponent 4 return exponent_of 5 6 square = nth_power(2 ) 7 cube = nth_power(3 ) 8 9 print(square(2 )) 10 print(キューブ(3))
匿名関数
- 1行のみ
- ステートメントではなく式
- 渡されたパラメータは反復可能なオブジェクトです。ラムダは内部的に反復可能なオブジェクトの__next__メソッドを呼び出してパラメータとして値を取得し、ラムダ関数のコロンの前に値を渡し、コロンの後に式計算の結果を返します
- 利点:コードの再現性の低下、モジュール式コード
1 [(ラムダ X:X * X)(X)のためのx における範囲(10)]
1 l = [(1,20)、(3,0)、(9,10)、(2、-1 )] 2 l.sort(key = lambda x:x [1 ]) 3 print(l)
呼び出し可能なオブジェクト
- ():呼び出し可能な演算子
- 呼び出し可能オブジェクトは組み込み関数callabel()を実装します
1つの インポートランダム 2つの 3 クラスBingoCage: 4 デフ __init__ (自己、項目): 5 self._items = リスト(商品) 6 random.shuffle(self._items) 図7は、 デフピック(自己): 8 試み: 9 リターンself._items ().pop 10 以外はIndexErrorを: 11 レイズ LookupErrorが(' 空BingoCageから選択' ) 12 DEF __call__ (自己): 13 戻りself.pick() 14 15 bingo = BingoCage(range(5 )) 16 bingo.pick()
関数型プログラミング
- コードの各部分は不変です。つまり、純粋な関数で構成されています
- map(function、iterable):iterableの各要素に対して、function関数を使用し、最後に新しいトラバース可能なコレクションを返します
- filter(関数、反復可能):反復可能の各要素について、関数functionを使用して判断し、Trueを返す要素が新しいトラバース可能なコレクションを形成します
- reduce(関数、反復可能):セットの最初の2つの要素を操作し、結果と3番目の要素を返す、など
1 #map函数 2 def factorial(n): 3 n <2 if 1 else n * factorial(n-1 )の 場合 1を返す4 5 fact = factorial 6 list(map(fact、range(10)))
1リスト(map(fact、filter(lambda n:n%2、range(6))))
1 から functools import reduce 2 reduce(lambda x、y:x + y、[1,2,3,4,5])