Python高次関数の基本11:高次関数とパラメーターなしの実際のパラメーター

1.関数は変数
です。pythonでの関数の定義は、タイプが関数であり、関数名は
変数の名前である変数を意味します。変数が実行できることはすべて、関数が実行できることです。

シーケンスのパラメータとしての変数
関数のパラメータとしての変数関数
の戻り値としての変数
注:関数本体は、定義されている場合は実行されません。

list1 = []
for x in range(0, 5):
    list1.append(lambda y: y * x)

print(list1[2](3))
print(list1[4](3))

x = 0 [ラムダy:y x]
x = 1 [ラムダy:y
x]、[ラムダy:y x]
x = 2 [ラムダy:y
x]、[ラムダy:y x]、[ラムダy :y x]
x = 3 [ラムダy:y x]、[ラムダy:y x]、[ラムダy:y x]、[ラムダy:y x]
x = 4 [ラムダy:y x]、[ラムダy:y x]、[ラムダy:y x]、[ラムダy:y x]、[ラムダy:y x]
执行第二、[ラムダy:y
x]、y是3、x是4值
12执行第四四TT [ラムダy:y * x]、y是3、x是4值是12

1.1。実際のパラメータの高次関数
パラメータが関数である関数は、実際のパラメータの高次関数
2です。システムの共通の実際のパラメータの高次関数の使用
max、min、sorted、map、reduce
1)max \ min
max(シーケンス)-比較シーケンス要素のサイズは、最大値を取得するために使用されます。要素
max(シーケンス、キー=関数)-関数は、最大値を求めるときに比較オブジェクトを決定します。
パラメーターキーの要件:a。は関数bです。この関数には、1つだけのパラメーター(シーケンス内のパラメーター)があり
ます。c。関数には戻り値(比較オブジェクト)があります。

students = [
    {'name': '小明', 'age': 23, 'score': 90},
    {'name': '张三', 'age': 30, 'score': 78},
    {'name': '小红', 'age': 18, 'score': 82},
    {'name': 'Tom', 'age': 26, 'score': 99}
]
# 求所有学生中成绩最好发学生
print(max(students, key=lambda item: item['score']))


def f2(item):
    print(f'item:{item}')
    return item['score']


print(max(students, key=f2))

2)ソート
済みソート済み(シーケンス)-シーケンス内の要素
のサイズを比較し、シーケンス内の要素を小さいものから大きいものにソートします(シーケンス、キー=関数)-関数がソートを決定するときに比較オブジェクトのサイズを比較します

students = [
    {'name': '小明', 'age': 23, 'score': 90},
    {'name': '张三', 'age': 30, 'score': 78},
    {'name': '小红', 'age': 18, 'score': 82},
    {'name': 'Tom', 'age': 26, 'score': 99}
]
print(sorted(students, key=lambda item: item['age']))


def a(x):
    return x['age']


print(sorted(students, key=a))

3)マップ
マップ(関数、シーケンス)-シーケンスを指定された方法で変換します。戻り値はマップオブジェクト(マップオブジェクトはシーケンス)
関数です:1。パラメーターがあります(このパラメーターは元のシーケンスの要素を指します)2。戻り値が必要(新しいシーケンスの要素)

nums = [19, 78, 76, 55, 30, 12]
result = map(lambda item: item % 10, nums)
print(list(result))

# 练习:获取班级所有学生的总成绩
c = [90, 89, 88, 99, 27, 76, 56]
e = [98, 78, 66, 82, 90, 12, 78]
m = [23, 98, 100, 72, 69, 27, 96]
result = map(lambda item1, item2, item3: item1 + item2 + item3, c, e, m)
print(list(result))

4)Reduceは、
functools import reduceからのすべてのデータに対して共通の操作を実行します。reduce
(関数、シーケンス、初期値)
関数を呼び出すための要件を追加するには:a。2つのパラメーターが必要です:
最初のパラメーター-最初のポイント値; 2回目から、前の操作の結果を
指します。2番目のパラメーター-シーケンス内の各要素を指します
。b。戻り値が必要です(操作ルールを決定するため)。

# 将数字序列中的元素全部拼接在一起
# [10, 89, 78, 20] -> 10897820
nums = [10, 89, 78, 20]
result = reduce(lambda s,item:s+str(item),nums,'')
print(result)

1.デコレータとは?デコレータ
の役割:関数に機能を追加するために使用されます。
本質:関数です(実際のパラメータ高次関数+戻り値高次関数+砂糖構文)
使用法(ルーチン):
def関数名1(パラメータ1 ):
def関数名2(* args、** kwarg):
新しい
関数のコード元の関数コードを呼び出します:パラメーター1(* args、** kwarg)
元の関数の
戻り値を返します関数名2の
説明を返します
関数名1-新しく追加された関数に応じて名前が付けられたデコレータの名前
パラメータ1:-追加する必要のある関数(元の関数)、通常はf、fn
関数名2-関数が追加された後の新しい関数の関数名、nuw_f、 new_fn

おすすめ

転載: blog.csdn.net/SaharaLater/article/details/111564657