Python プログラミングの基礎: 関数 (2)

Python プログラミングの基礎: 関数 (1)

1.ラムダ()関数

lambda() 関数は、同じ行で関数を定義する単純な関数メソッドです。lambda() は実際に関数オブジェクト (無名関数) を生成します。これは主に関数オブジェクトがパラメーターとして必要な場合や、関数が単純で一度だけ使用される場合に使用されます。
lambda() 関数の構文形式は次のとおりです。

lambda 参数1,参数2...:<函数语句>

この関数の戻り値は関数ステートメントの計算結果であり、ステートメントは 1 つだけです。例えば:

lambda x,y:x+y

上の式では、仮パラメータは x と y で、関数の戻り結果は x+y です。
ここに画像の説明を挿入します
以前に辞書をキーでソートする方法を紹介しましたが、値でソートしたい場合は、lambda 関数とsorted() 関数を組み合わせることができます。
ここに画像の説明を挿入します
上の例では、sorted() 関数には 2 つのパラメータがあります。最初のパラメータは、並べ替える必要がある辞書エントリです。後者のキーは、並べ替え中に指定された並べ替えキーを表します。lambda() 関数は、辞書とエントリの値が抽出され、ソート対象のキーと結合されます。

2. 再帰関数

再帰とは同じメソッドを繰り返す処理のことを指しますが、再帰関数とは関数が与えられた終了条件の下で自身を継続的に呼び出す処理のことで、最も一般的なのは階乗を求める処理です。
非負の整数の前提の下では、n が 1 に等しい場合、n の階乗は 1 になります。n が 1 以上の場合、n は n 以下のすべての正の整数の結果です。 、ん!、n の場合、n の階乗は n と n-1 の階乗乗算、つまり n! とみなすことができます。=n*(n-1)!、この乗算プロセスが再帰的に繰り返されます。Python言語で書くと内容は以下の通りです。
ここに画像の説明を挿入します
上の例では、nが1の場合、関数fun()は結果1を返します。nが1より大きい場合、階乗はn-1に変換されます。階乗、最後の n 値が 1 になるまで、プロセスは再帰プロセスであり、最終終了条件は n==1 です。

上記の例に加えて、再帰関数を使用してフィボナッチ数列を見つけるのが一般的です。フィボナッチ数列では、最初の 2 つの数値は両方とも 1 です。3 番目の数値から始めて、各数値は最初の 2 つの数値と等しくなります。合計は、上記の再帰的な考え方によれば、n が 1 または 2 の値を取ると再帰は終了します。n が 2 より大きい場合は、n=n-1+n-2 となり、n-1 と n-1 を見つけるとみなすことができます。 n-2 、このときパラメータ n の値は小さくなり続け、最終的には 1 と 2 の n 個の値に収束します。具体的な処理は次のとおりです。
ここに画像の説明を挿入します

3. 変数の範囲

プログラムの作成プロセスでは、通常、関連する変数を定義する必要があります。これらの変数は、プログラムの実行中にアクセスされます。ただし、変数は、プログラム内のすべての場所からアクセスできるわけではありません。アクセス権は、変数が割り当てが行われる場所。
各変数には独自のスコープがあります。スコープとは、変数にアクセスできる場所とアクセスできない場所を意味します。変数の基本的なスコープは「ローカル変数」と「グローバル変数」の 2 つです。

ローカル変数は
関数に直接関係しています。通常、関数内で定義されます。関数呼び出しごとに新しいスコープが作成されます。このとき、ローカル変数はスコープ内でアクセスできます。関数の外からアクセスすると、変数へのアクセスは失敗します。 。
ここに画像の説明を挿入します
上図のxは関数内で定義されたローカル変数なので、外部からアクセスするとコードエラーとなり、エラー内容はx変数が定義されていないというものです。

すべての変数は
ローカル変数に相当します。すべての変数は関数の外部、つまりプログラムの主要部分で作成される変数であり、グローバルに参照できます。
ここに画像の説明を挿入します
上図では、x=1 がグローバル変数なので、関数は内部的に x にアクセスして x+x の計算結果を返すことができますが、同時に外部関数が print を使用して直接 x の値を読み取り、それを出力します。

グローバル変数とローカル変数は
同じ名前です。すべての変数がローカル変数と同じ名前を持つ場合があります。この場合、関数内ではローカル変数が最初にアクセスされます。
ここに画像の説明を挿入します
上図では、ローカル変数 x=2 とグローバル変数 x=1 が同時に定義されており、関数 f() はこれら 2 つの変数に同時にアクセスできますが、このとき 2 つの変数は同じ名前であるため、関数 f() の実行時に優先され、ローカル変数 x=2 にアクセスする場合、つまり最初の出力は 2+2 であり、外部から x に直接アクセスする場合は、グローバル変数、つまりx の出力は 1 です。

上記の状況で、関数内で最初にグローバル変数にアクセスする場合は、キーワード global 宣言を使用するだけで済みます。
ここに画像の説明を挿入します
上記の関数では、最初に global を使用してすべての変数 x=1 にアクセスし、次に x=2 を使用して x を再割り当てします。したがって、この時点でグローバル変数 x の値は 2 になります、つまり、最初の出力は 2+2 になります。 、最初の出力は 2+2 です。2 つの出力グローバル変数 x も 2 です。

おすすめ

転載: blog.csdn.net/weixin_42051846/article/details/131828546