関数型プログラミング1
1.1匿名関数
大腸xはパラメータを表し前にキーワードラムダは、無名関数を表します。コロンの後に一つだけの式が存在することができ、戻り値は、式の結果であり、リターンを書いていません。あなたは直接関数オブジェクトを作成する関数名を定義する必要はありません。機能を返し、あなたはまた、匿名関数を返すことができます。次のコードは、例です。
myabs =ラムダのx:-x X X <0、他の場合
myabs(-2)
次のように出力されます。
2
1.2リターン機能
Pythonの関数はint型のみ、STR、リスト、辞書データ型を返すことができ、機能も返すことができます!
たとえば、関数f()、私たちはそれは、関数gに戻るの定義は次のように書くことができます。
デフF():
印刷( ')(Fを呼び出して...')
DEF G():#は、関数gを定義します
印刷( 'コールグラム()...')
リターングラムの#リターン関数g()
上記のコードの関数f()は、(関数gの内部に定義される)です。関数g()は、オブジェクト、関数名gは()であるので、関数g()を指すように可変なので、関数f(最外層)(変数gを返すことができる)、すなわち、関数g()は、それ自体である。関数fを呼び出します()、我々が得るF()関数が返します。
X = F()#呼び出しF()
次のように出力されます。
F()を呼び出し...
1.3クロージャ
関数定義内で定義された機能と外部機能は同じですが、彼らは外にアクセスすることはできません。
DEF G():#は、関数gを定義します
印刷( 'コールグラム()...')
デフF():
印刷( ')(Fを呼び出して...')
リターングラムの#リターン関数g()
関数fの定義にG()()内の、他のコードを防ぐために)(Gを呼び出します。
デフF():
印刷( ')(Fを呼び出して...')
DEF G():#は、関数gを定義します
印刷( 'コールグラム()...')
リターングラムの#リターン関数g()
この次に内層(可変パラメータと見なさ)変数参照機能層として機能し、閉鎖クロージャと呼ばれる内部機能の状況に戻ります。クロージャの特性は、関数がローカル変数外側の関数への参照を返すもあります。したがって、正しく閉鎖を使用するためには、ローカル変数は、関数の戻りの後に変更することができない意味することを保証する必要があります。
1.4部分関数
INT()関数は、整数であることが文字列に変換します。ときにのみ、着信文字列、int型()関数のデフォルトの小数点変換:
int型('98' )
次のように出力されます。
98
基底関数は、デフォルト値は10であり、追加のパラメータを提供します。入ってくる基本パラメータの場合は、N-aryの変換を行うことができます。
INT( '100'、基地= 8)
次のように出力されます。
64
functools.partialは、新しい関数を作成するには、次のコードを使用して、部分関数を作成することです:
輸入functools
INT2 = functools.partial(INT、ベース= 2)
INT2( '1000')
次のように出力されます。
8 無錫婦人科病院http://www.ytsgfk120.com/
functools.partialは、多くのパラメータの機能は、新しいパラメータ機能の少ないになることができ、より少ないパラメータが作成難易度の関数呼び出しを小さくすると、デフォルト値を指定する必要があります。
1.5の機能を削減
削減()、パッケージfunctoolsをインポートする必要性を減らす使用します。
functoolsから減らすインポート
受信したパラメータ()関数を減少させる関数fとリストであり、F 2つのパラメータを受信しなければなりません。頻繁に呼び出される関数fのリストの要素ごとに()を低減し、最終結果の値を返します。
以下は、関数fであります:
デフF(X、Y):
X + Yを返します
(F [1、3、5、7、9])低減を呼び出し、以下のように計算された場合、機能を低下させます。
最初の最初の2つの要素の計算:F(1、3)、結果は4です。
第三の要素が計算されるのと、結果:F(4、5)、結果は9です。
第4要素が計算されるのと、結果:F(9,7)、結果は16です。
5要素計算の結果を送信する:F(16、9)、25でした。
また、初期値として算出された第3オプションのパラメータを受信することができる)(減らします。計算100の初期値は、場合:減らす(F [1、3、5、7、9]、100)の計算の最初のラウンドのように、結果は、125になる:最初の要素の初期値を算出します:(100、1)F、結果は101です。
1.6フィルタ機能
フィルタ()関数は、関数fとリストを受け入れます。エフェクト関数fは、TrueまたはFalseを返す要素ごとに決定されます。決意の結果に基づいて、フィルタ()フィルタ要素の条件に適合し、そして資格要素の新しいリストを返すありません。
リスト[1、4、6、7、9、12、17]から奇数書き込むために、まず、決意機能を偶数、奇数の保持を削除します。
デフ(x)はis_odd:
戻りX%2 == 1
次にさえをフィルタリングするためのフィルタ()関数を使用します:
リスト(フィルタ(is_odd、[1、4、6、7、9、12、17]))
次のように出力されます。
[1、7、9、17]
フィルタを使用して()、あなたは多くの便利な機能を実行することができます。例えば、Noneまたは空の文字列を削除しません。以下は、ファンクション文字列が空であるか否かを決定するためのコードです。
デフIS_NOT_EMPTY(S):
リターンSとlen(s.strip())> 0
そして、次のコマンドを入力します。
リスト(フィルタ(IS_NOT_EMPTY、[ 'テスト'、なし、 ''、 ''、 'END']))
出力は次のようになります。
[ 'テスト'、 'END']
2 Pythonは注意するポイントを学びます
1、代わりにヌルなしNULLの。
2、TrueまたはFalseの最初の文字を大文字にする必要があります。
図3は、プリント()は出力空間をし、その後、順番に各文字列を出力コンマに遭遇します。次のコードは、例です。
印刷( 'A'、 'B')
次のように出力されます。
AB
4、Pythonの0に、空の文字列「」とFalseなどなし、およびその他の値は非空の文字列として真です。