Oh, mon garçon, il y a du code sur l'écran et ça a l'air terriblement déroutant.
Ceci est un exemple d'une fonction vraiment alambiquée et compliquée que vous n'écririez jamais, mais ce sera bon
à des fins d'exercice.
Et nous parlons spécifiquement de cela ici appelé non local.
C'est en fait un nouveau mot-clé dans Python trois.
Et comme vous pouvez le voir, mon Reppel ne le remarque même pas.
Il n'est donc même pas surligné en bleu car il s'agit d'une nouvelle fonctionnalité.
Mais je veux vous en parler et vous dire ce qu'il fait.
Le mot clé non local est utilisé pour faire référence à cette partie, ce parent local.
C'est une façon pour nous de dire, hé, je veux utiliser une variable qui n'est pas une variable globale, mais qui
sort du cadre de ma fonction.
Donc, sur la base de cette définition, essayez de mettre la vidéo en pause et voyez ce que cette fonction pourrait
faire, je vais l'exécuter maintenant, puis parcourir le code si je clique sur exécuter.
C'est ce que nous obtenons.
Alors parlons-en.
Nous avons une fonction externe, puis nous appelons la fonction externe.
Donc l'interpréteur Python va dire, d'accord, nous avons une variable X qui est locale
à la fonction externe.
Et puis à l'intérieur d'ici, nous allons définir une fonction interne, une autre fonction.
Et ici, avant même d'appeler cela, nous avons sauté à la ligne neuf et avons dit, d'accord, appelez la fonction interne.
Nous revenons et nous disons, hé, ligne cinq, je veux utiliser X non local.
Hmm.
Qu'est-ce que ça veut dire?
Eh bien, je veux utiliser cette variable X car elle n'est pas locale.
C'est-à-dire que je ne veux pas créer une nouvelle variable X.
Je veux passer la portée à mes parents, la portée de mon parent local et saisir tout ce que vous y trouverez.
Tant qu'il ne s'agit pas d'une variable globale, tout parent fera l'affaire.
Je veux saisir ce non local.
Alors maintenant, ce X fait référence à la fonction externe ici.
Ainsi, lorsque nous disons que X est égal à non local, nous attribuons cette nouvelle chaîne.
Et en remplaçant ce local de sorte que lorsque nous imprimons interagisse, nous obtenions non local, mais également lorsque
nous imprimons le X externe, nous avons modifié cette portée externe avec le mot-clé nonlocal.
Cela devient donc non local également.
Si je supprime cette ligne et que je la commente et que je clique sur exécuter.
Vous voyez la différence maintenant que nous avons le non local interne, mais le local externe n'a pas été modifié car
il s'agit d'une nouvelle variable.
Encore une fois, je soutiens que cela rend votre code plus compliqué qu'il ne devrait l'être.
Il y a donc des cas particuliers où vous voudrez peut-être l'utiliser, mais si vous pouvez essayer de
rendre votre code prévisible, où vous pouvez éviter d'utiliser des choses comme non locales et globales, attention, elles sont là pour une raison
car elles sont utiles dans certains situations.
Cela dit, gardez à l'esprit, rendez votre code prévisible, nettoyez votre code et je vous verrai dans la
prochaine vidéo.