Python - fonctions récursives et fonctions anonymes (expressions lambda)

1. Fonction récursive

如果一个函数在内部不调用其他的函数,
而是调用自身的话,这个函数就是递归函数。

1.1 Caractéristiques des fonctions récursives

Insérez la description de l'image ici
Exemple: utilisez une fonction récursive pour calculer 5!

# 应用: 运用递归函数计算5!
def fn(num):
    if num == 1:
        result = 1
    else:
        result = fn(num - 1) * num
    return result


n = int(input("请输入一个正整数: "))
print(str(n) + " 的阶乘是: " + str(fn(n)))

Résultat de l'opération:
Insérez la description de l'image ici
le processus d'appel de fonction:
Insérez la description de l'image ici


Fonction anonyme

匿名函数(lambda)是指没有名字的函数,即不再使用def语句定义的函数。
可以运用在需要一个函数但是又不想费神去命名这个函数的场合中。
通常情况下,这样的函数只使用一次。

Insérez la description de l'image ici
Description du paramètre:

  • result: la valeur de retour de la fonction
  • [arg1 [, arg2, ..., argn]]: paramètres optionnels, utilisés pour spécifier la liste des paramètres à passer, les paramètres multiples sont séparés par des virgules.
  • expression: paramètre obligatoire, utilisé pour spécifier une expression afin d'obtenir une fonction spécifique. S'il y a des paramètres, ils seront appliqués dans l'expression.
  • Lors de l'utilisation d'expressions lambda, il peut y avoir plusieurs paramètres, mais l'expression ne peut en avoir qu'un, c'est-à-dire qu'une seule valeur peut être renvoyée et aucune autre instruction sans expression ne peut apparaître. Tels que (pour ou pendant).

Exemple:

add = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print(add(1, 2))

résultat de l'opération:
Insérez la description de l'image ici

Insérez la description de l'image ici


1.1 Utilisation avancée des fonctions anonymes

我们可以将匿名函数作为参数传递。

Exemple:

def fun(a, b, opt):
    print("a = %d" % a)
    print("b = %d" % b)
    print("result = ", opt(a, b))


fun(1, 2, lambda x, y: x + y)

résultat de l'opération:
Insérez la description de l'image ici

匿名函数作为内置函数的参数来使用
stus = [
    {
    
    "name": "小樱", "age": 18},
    {
    
    "name": "小红", "age": 17},
    {
    
    "name": "小绿", "age": 19},
]
# 按age排序:
stus.sort(key=lambda x: x['age'])
print(stus)

résultat de l'opération:
Insérez la description de l'image ici


Exemple complet: fonction récursive

# 5.打印斐波那契数列 1 1 2 3 5 8 13....打印36项,每行打印6个
Fibonacci_num = 36


def getSum(num):
    if num == 1 or num == 2:
        return 1
    else:
        return getSum(num - 1) + getSum(num - 2)


format_flag = 0
for item in range(1, 37):
    print(getSum(item), end="\t\t")
    format_flag += 1
    if format_flag % 6 == 0:
        print()

résultat de l'opération:
Insérez la description de l'image ici


Je suppose que tu aimes

Origine blog.csdn.net/I_r_o_n_M_a_n/article/details/115328154
conseillé
Classement