Maison >développement back-end >Tutoriel Python >Utilisez Python cinq points pour obtenir la méthode scope
Pensez-y, y aura-t-il une sortie lors de l'exécution du programme suivant à ce moment-là ? L'exécution sera-t-elle réussie ?
#块级作用域 if 1 == 1: name = "lzl" print(name) for i in range(10): age = i print(age)
Jetons d'abord un coup d'œil aux résultats de l'exécution
C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py lzl 9
Processus terminé avec le code de sortie 0
Le code a été exécuté avec succès, pas de problème en Java ; /C# Dans , l'exécution du code ci-dessus indiquera que le nom et l'âge ne sont pas définis, mais dans Python, il peut être exécuté avec succès car il n'y a pas de portée au niveau du bloc. Python. La variable peut être appelée en externe, afin qu'elle puisse s'exécuter avec succès
2. Portée locale En rappelant les connaissances apprises auparavant, nous apprenons le <.> fonctionLorsque la fonction est une portée distincte. Il n'y a pas de portée au niveau du bloc en Python, mais il existe une portée locale ; regardez le code suivant #Portée locale
Exécutez cette section Code, demandez-vous s'il y aura une sortie ?def func(): name = "lzl" print(name)Erreur d'exécution, je pense que tout le monde peut comprendre cela, la variable name ne prend effet que dans la fonction func(), elle ne peut donc pas être appelée globalement, faites un simple ajustement au code ci-dessus, voyons voir ; quel est le résultat ?
Traceback (most recent call last): File "C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py", line 23, in <module> print(name) NameError: name 'name' is not definedAjouter une ligne de code au code précédent. Avant que le nom de la variable ne soit imprimé, une fonction est exécutée. L'impression changera-t-elle à ce moment-là ?
#局部作用域 def func(): name = "lzl" func() #执行函数 print(name)L'exécution rapporte toujours une erreur, revenons à la phrase tout à l'heure : même si la fonction est exécutée, la portée de name est uniquement à l'intérieur de la fonction, et elle ne peut toujours pas être appelée de l'extérieur ; rappelez-vous les deux premiers points de connaissance Attendez, commençons ensuite le mouvement d'amplification
Traceback (most recent call last): File "C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py", line 23, in <module> print(name) NameError: name 'name' is not defined
3. Chaîne de portée
#作用域链 name = "lzl" def f1(): name = "Eric" def f2(): name = "Snor" print(name) f2() f1()
4. La version ultime de la lunette.
#终极版作用域 name = "lzl" def f1(): print(name) def f2(): name = "eric" f1() f2()Le résultat de l'exécution est "lzl". Analysez le code ci-dessus et le résultat de l'exécution de f2() est La mémoire. adresse de la fonction f1, c'est-à-dire ret=f1 ; exécuter ret() équivaut à exécuter f1(), cela n'a rien à voir avec f2() et f1(). dans la même chaîne de portée s'il n'y a pas de variable à l'intérieur de la fonction, elle regardera à l'extérieur, donc la valeur du nom de la variable à ce moment est "lzl" si vous comprenez cela, alors vous connaissez également la réponse au code ultime ; que la réponse n'a pas été donnée tout à l'heure
#终极版作用域 name = "lzl" def f1(): print(name) def f2(): name = "eric" return f1 ret = f2() ret() #输出:lzlOui, la sortie est "lzl", rappelez-vous qu'avant l'exécution de la fonction, la portée a été formée et la chaîne de portée a également été générée
#终极版作用域 name = "lzl" def f1(): print(name) def f2(): name = "eric" f1() f2() # 输出:lzl
5. Questions d'entretien avec Sina
Jugement Quel type de li ? De quel type sont les éléments de li ?li = [lambda :x for x in range(10)]Vous pouvez voir que li est un type de liste et que les éléments de la liste sont des fonctions. Imprimez ensuite la valeur de retour du premier élément de la liste. Quelle est la valeur de retour à ce moment ?
print(type(li)) print(type(li[0])) # <class 'list'> # <class 'function'>li La valeur de retour de la première
#lambada 面试题 li = [lambda :x for x in range(10)] res = li[0]() print(res) #输出:9fonction
est 9 et non 0. N'oubliez pas : le code interne ne sera pas exécuté avant que la fonction ne soit exécutée ; le blog par vous-même Pratiquez et approfondissez votre impression
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!