⊗pyPmFnNl 21 of 129 menu

L'instruction nonlocal en Python

Il arrive des cas où dans une fonction externe il y a une variable à laquelle il faut accéder dans la fonction interne. Déclarons dans la fonction outer la variable i. Par rapport à la fonction interne, cette variable sera externe (les variables globales sont celles déclarées UNIQUEMENT dans le code externe). Et donnons à la fonction inner la tâche d'ajouter un à i :

def outer(): i = 0 def inner(): i += 1 # affichera [4, 9, 25] inner() return i

Cependant, pour inner, la variable i est locale, Python la considère comme non déclarée et affiche l'erreur correspondante. Auparavant, ce type d'erreur était corrigé à l'aide de l'instruction global. Cependant, ici i est une variable externe, il faut donc utiliser l'instruction nonlocal. Elle prend les noms de variables listés dans la portée la plus proche, excluant la portée globale, c'est-à-dire que i à l'intérieur de inner sera prise sur la variable déclarée au-dessus de cette fonction :

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # affichera 1

Dans le code suivant, un certain programmeur a fait une erreur :

num = 10 def outer(): num = 5 def inner(): num -= 2 inner() return num print(outer())

Qu'est-ce qui ne va pas avec ce code ? Trouvez et corrigez l'erreur de l'auteur du code.

Dans le code suivant, un certain programmeur a fait une erreur :

num = 3 def outer(): num += 1 tst = num def inner(): tst = tst ** 3 inner() return tst print(outer())

Qu'est-ce qui ne va pas avec ce code ? Trouvez et corrigez l'erreur de l'auteur du code.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser