Python のファーストクラス関数
Python では、関数は第一級のオブジェクトとして扱われます。これは、数値文字列やその他の変数と同じように使用できることを意味します。あなたはできる:
- 関数を変数に割り当てます。
- それらを引数として他の関数に渡します。
- 関数からそれらを返します。
- それらをリストや辞書などのデータ構造に保存します。
この機能により、再利用可能なモジュール式の強力なコードを作成できます。
第一級関数の特徴
Python の関数には次の重要な特徴があります。例を挙げて 1 つずつ見てみましょう。
1. 変数への関数の代入
我々はできる 関数を変数に代入する そして変数を使用して関数を呼び出します。
例:
Python def msg ( name ): return f 'Hello { name } !' # Assigning the function to a variable f = msg # Calling the function using the variable print ( f ( 'Emma' ))
出力
Hello Emma!
説明:
- 関数 msg は変数 f に代入されます。
- f を使用して、関数が変数のように動作することを示す msg を呼び出すことができるようになりました。
2. 関数を引数として渡す
機能は次のとおりです 引数として渡される 他の機能を有効にする 高次関数 。
例:
Python def msg ( name ): return f 'Hello { name } !' def fun1 ( fun2 name ): return fun2 ( name ) # Passing the msg function as an argument print ( fun1 ( msg 'Alex' ))
出力
Hello Alex!
説明:
- 関数 fun1 は、別の関数 (fun2) を入力として受け取ります。
- msg は fun1 に渡され、fun1 はそれを「Alex」で呼び出します。
3. 他の関数から関数を返す
関数でできることは、 別の関数を返す 関数ファクトリーの作成が可能になります。
例:
Python def fun1 ( msg ): def fun2 (): return f 'Message: { msg } ' return fun2 # Getting the inner function func = fun1 ( 'Hello World!' ) print ( func ())
出力
Message: Hello World!
説明:
- 関数 fun1 は別の関数 fun2 を定義し、それを返します。
- func は、後で実行できる返された関数 fun2 を格納します。
関数は次のようなデータ構造に格納できます。 リスト または 辞書 。
例:
Python def add ( x y ): return x + y def subtract ( x y ): return x - y # Storing functions in a dictionary d = { 'add' : add 'subtract' : subtract } # Calling functions from the dictionary print ( d [ 'add' ]( 5 3 )) print ( d [ 'subtract' ]( 5 3 ))
出力
8 2
説明:
- 関数の加算と減算は辞書に保存されます。
- これらはキーを使用してアクセスされ、直接実行されます。
プログラミング言語の第一級関数を最もよく表しているのは次のうちどれですか?
- あ
独自のスコープ内からのみ呼び出すことができる関数。
- B
引数として渡され、他のオブジェクトと同様に他の関数から返される変数に割り当てることができる関数。
- C
モジュールの最上位レベルでのみ定義できる関数。
- D
特定のコンテキストでのみ実行できる関数。
第一級関数のコンテキストでは、高階関数とは何ですか?
- あ
プリミティブ データ型のみを返す関数。
- B
他の関数を引数として受け取ったり、結果として返したりできる関数。
- C
別の関数内で定義されているが返すことができない関数。
- D
別のスレッドで実行される関数。
次のコードの出力はどうなるでしょうか?
デフォルトの挨拶(名前):
return f'こんにちは{名前}'
Say_hello = 挨拶
print(say_hello('オタク'))
- あ
こんにちは、ご挨拶
- B
挨拶する
- C
こんにちはオタク
- D
タイプエラー
関数を変数に割り当てることができます。ここで、say_hello は挨拶の別の参照になります。
第一級関数のプロパティではないものは次のうちどれですか?
- あ
関数はデータ構造に格納できます
- B
変数に関数を代入できる
- C
関数は他の関数を返すことができます
- D
関数はプリミティブ型のみを返すことができます
第一級関数は、プリミティブに限定されず、他の関数を含むあらゆる型を返すことができます。
このコードの出力は何になるでしょうか?
デフォルトのアウター():
def inner():
'内部関数' を返す
インナーを返す
関数 = アウター()
print(関数())
- あ
内部関数
- B
内側
- C
外側
- D
エラー
external() は inner 関数を返し、 func() はそれを呼び出してその文字列を返します。
第一級関数の特徴ではないものは次のうちどれですか?
- あ
これらは変数に割り当てることができます。
- B
これらは他の関数に引数として渡すことができます。
- C
これらはプログラム内で 1 回だけ定義できます。
- D
これらは他の関数から返すことができます。
次のコードの出力は何でしょうか?
def make_multiplier(n):
デフォルト乗数(x):
x * n を返す
戻り乗数
double = make_multiplier(2)
print(double(5))
- あ
7
- B
10
- C
25
- D
エラー
make_multiplier(2) は、引数を 2 で乗算する関数を返します。したがって、double(5) は 10 を返します。
Python は変数に関して関数をどのように処理しますか?
- あ
関数は静的オブジェクトです
- B
関数は定数であり、再割り当てはできません
- C
関数は第一級市民であり、渡して保存したり再割り当てしたりすることができます
- D
関数を使用するにはグローバルに宣言する必要があります
第一級市民であるということは、関数に他のオブジェクトと同様に渡したり返したりを割り当てることができることを意味します。
クイズは正常に完了しました スコア : 2 /8 正確さ : 0% ログインして説明を見る 1 /8 1 /8 < Previous 次へ >