Un mémorandum du contenu de l'enquête de clôture

En étudiant Python, je n'ai pas compris ce que je disais quand quelque chose appelé une fermeture est sorti, alors j'ai fait une note pour que je puisse regarder en arrière quand je l'oublierais.

Fondamentalement, vous pouvez le comprendre en vous référant à ce qui suit. Astuces Python: je souhaite utiliser la fermeture avec Python [Quand utilisez-vous la fermeture? -Liste trois scénarios d'utilisation](http://qiita.com/HirofumiYashima/items/ed17c83f26de3d510b93#python-tipspython%E3%81%A7%E3%82%AF%E3%83%AD%E3%83 % BC% E3% 82% B8% E3% 83% A3% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3% 81% 9F% E3% 81% 84) [Python] Fonction (4)

En gros, la fermeture ** La valeur de la variable dans la fonction est la valeur de la variable qui a passé lorsque la fonction a été déclarée (la fonction a été lue). ** ** C'est ce que je comprends maintenant.

Dans un tel cas, 5 est stocké dans la variable "i" lorsque la fonction est lue, donc même si 6 est entré dans la variable "i" après cela, la valeur renvoyée sera 5.

i = 5

def f(arg=i):
    print(arg)

i = 6
f()

http://docs.python.jp/3/tutorial/controlflow.html

J'ai vécu dans un monde sans rapport avec Cloja, alors pourquoi! 6 Yaro! Il y a un sentiment.     Alors, [Quand utilisez-vous Closure? -Liste trois scénarios d'utilisation](http://qiita.com/HirofumiYashima/items/ed17c83f26de3d510b93#python-tipspython%E3%81%A7%E3%82%AF%E3%83%AD%E3%83 % BC% E3% 82% B8% E3% 83% A3% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3% 81% 9F% E3% 81% 84) cette.

def circle_area_func(pi):
    """Renvoie une fonction pour trouver l'aire d'un cercle"""
    def circle_area(radius):
        return pi * radius ** 2 #Ce pi est un cercle_area_func()Valeur spécifiée dans l'argument de

    return circle_area #Renvoie la fonction en tant que valeur de retour

#Rapport de circonférence 3.Génère une fonction pour calculer la surface lorsqu'elle est définie sur 14
ca1 = circle_area_func(3.14)

#Ensuite, définissez le rapport de circonférence sur 3.Générer la fonction lorsqu'il est réglé sur 141592
ca2 = circle_area_func(3.141592)

#Les deux fonctions créées ci-dessus ont un rayon=Obtenez le résultat de l'opération en donnant 1 comme argument
ca1(1)
ca2(1)

#Les deux fonctions créées ci-dessus ont un rayon=Obtenez le résultat de l'opération en donnant 2 comme argument
ca1(2)
ca2(2)

Les paramètres de chaque fonction ont leurs propres valeurs, mais je ne savais pas pourquoi c'était la valeur stockée dans radius.

En premier lieu, je ne semblais pas comprendre ce qui était stocké dans ca1 de "ca1 = circle_area_func (3.14)".

J'ai toujours pensé qu'il était stocké dans ca1 dans la fonction "circle_area_func (pi)", mais ce n'était pas la fonction "circle_area (radius)".

    def circle_area(radius):
        return pi * radius ** 2 #Ce pi est un cercle_area_func()Valeur spécifiée dans l'argument de

    return circle_area

Lorsque "ca1 (1)" est exécuté dans le traitement suivant, la fonction "circle_area (radius)" est appelée. Par conséquent, 1 de "ca1 (1)" est stocké dans le paramètre "rayon".

La variable "pi" dans la fonction "circle_area (radius)" est un concept de fermeture, et elle contient juste 3.14 qui a été entrée comme argument dans "ca1 = circle_area_func (3.14)".

Cela a pris énormément de temps, mais j'ai faim.

Recommended Posts

Un mémorandum du contenu de l'enquête de clôture
Un petit mémorandum d'openpyxl
Un mémorandum d'utilisation de eigen3
[Python] Un mémorandum de belle soupe4
Mémorandum de dossiers sous conf.d
Un mémorandum sur l'utilisation de la fonction d'entrée de Python
Un mémorandum de la vitesse de diagonalisation arbitraire des degrés
Mémorandum sur le QueryDict de Django
Mémorandum du processus de suppression de chaîne python
Un mémorandum de problème lors du formatage des données
Mémorandum de sed
Contenu de __name__
Image de fermeture
Un mémorandum sur l'appel de Python à partir de Common Lisp
Mémorandum d'extraction par requête python bs4
Créer une table avec le notebook IPython
Mémorandum de fastText (édition)
Un mémorandum sur les avertissements dans les résultats de sortie de pylint
Obtention du contenu de sosreport
Un mémorandum sur Nan.
Mémorandum elasticsearch_dsl
[Note] Contenu de la forme [0], forme [1], forme [2]
[Ubuntu] Comment supprimer tout le contenu du répertoire
Un mémorandum où je suis tombé sur mon HEROKU & Python personnel (Flask)
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Script Python qui compare le contenu de deux répertoires
Comment connecter le contenu de la liste dans une chaîne de caractères
Un simple exemple de pivot_table.
Mémorandum sur la corrélation [Python]
Un mémorandum sur le simulacre de Python
Un mémorandum concernant la conversion γ
Un bref résumé de Linux
Simulation du contenu du portefeuille
Mémorandum de l'outil de gestion de paquets Python ez_setup
Traitez le contenu du fichier dans l'ordre avec un script shell
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 5)
Créez une fonction pour obtenir le contenu de la base de données dans Go
Un mémorandum concernant l'acquisition de l'examen de base de certification d'ingénieur Python3
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche