Maison > développement back-end > Tutoriel Python > Secrets sur les fonctions de retour Python et les valeurs de retour

Secrets sur les fonctions de retour Python et les valeurs de retour

Tomorin
Libérer: 2018-08-17 17:53:35
original
1713 Les gens l'ont consulté

Je suis récemment entré en contact avec python et j'ai vu le concept de fonction de retour en python. Je n'ai été exposé qu'à la valeur de retour de fonction auparavant. Par exemple, python peut renvoyer un int. , str, list, dict, etc. Tapez data, ce que je veux dire ici, c'est que python prend également en charge la fonction de retour .

Tout d'abord, examinons la syntaxe de base de la prise en charge par Python de la fonction de retour

def f():
    print 'call f()...'
    # 定义函数g:
    def g():
        print 'call g()...'
    # 返回函数g:
    return g
Copier après la connexion

Implémentons la somme des paramètres variables. Habituellement, la fonction de sommation est définie comme ceci :

def calc_sum(*args):
    ax = 0
    for n in args:
        ax = ax + n  
    return ax
Copier après la connexion

Cependant, que se passe-t-il si la somme n'a pas besoin d'être calculée immédiatement, mais est calculée selon les besoins dans le code suivant ? Au lieu de renvoyer le résultat de la sommation, vous pouvez renvoyer la fonction de sommation :

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n       
        return ax   
        return sum
Copier après la connexion

Lorsque nous appelons lazy_sum(), ce qui est renvoyé n'est pas le résultat de la sommation, mais la fonction de sommation :

>>> f = lazy_sum(1, 3, 5, 7, 9)
>>> f
<function lazy_sum.<locals>.sum at 0x101c6ed90>
Copier après la connexion

Le résultat de la somme est effectivement calculé lorsque la fonction f est appelée :

>>> f()
25
Copier après la connexion

Dans cet exemple, nous définissons la fonction somme dans la fonction lazy_sum, et la fonction interne somme peut référencer les paramètres et variables locales de la fonction externe lazy_sum. Lorsque lazy_sum renvoie la fonction sum, les paramètres et variables pertinents sont enregistrés dans la fonction renvoyée. Cette structure de programme appelée "Closure" a une grande puissance.

Veuillez noter encore une chose, lorsque nous appelons lazy_sum(), chaque appel retournera une nouvelle fonction, même si les mêmes paramètres sont passés :

>>> f1 = lazy_sum(1, 3, 5, 7, 9)
>>> f2 = lazy_sum(1, 3, 5, 7, 9)
>>> f1==f2
False
Copier après la connexion

f1() et f2 Les résultats de l'appel de () ne s'influencent pas mutuellement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal