Table des matières
1. Portée au niveau du bloc
Effectuer des ajustements à la fonction et voir comment le code suivant s'exécute ?
D'accord, assez de préparation, la version ultime est ici~~
Maison développement back-end Tutoriel Python Utilisez Python cinq points pour obtenir la méthode scope

Utilisez Python cinq points pour obtenir la méthode scope

Mar 16, 2017 pm 04:25 PM
python

1. Portée au niveau du bloc

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)
Copier après la connexion

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
Copier après la connexion

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 <.> fonction

Lorsque 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)
Copier après la connexion

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 &lt;module&gt;
    print(name)
NameError: name 'name' is not defined
Copier après la connexion
Copier après la connexion

Ajouter 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)
Copier après la connexion

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 &lt;module&gt;
    print(name)
NameError: name 'name' is not defined
Copier après la connexion
Copier après la connexion

3. Chaîne de portée

Effectuer des ajustements à la fonction et voir comment le code suivant s'exécute ?

Après avoir appris les fonctions, vous devez savoir que Snor sera affiché après l'exécution de f1(). Rappelons d'abord un concept. Il existe une chaîne de portée en Python. Les variables seront recherchées de l'intérieur. l'extérieur. Allez d'abord chez vous. En cherchant la lunette, je ne suis pas allé voir les supérieurs pour la chercher jusqu'à ce que je ne la trouve pas et que j'ai signalé une erreur
#作用域链
 
name = "lzl"
def f1():
    name = "Eric"
    def f2():
        name = "Snor"
        print(name)
    f2()
f1()
Copier après la connexion

4. La version ultime de la lunette.

D'accord, assez de préparation, la version ultime est ici~~

Réfléchissez à la question de savoir si le résultat final de l'exécution de f2() doit imprimer "lzl" ou "eric" ? N'oubliez pas votre réponse. Au lieu de publier la réponse maintenant, jetez un œil au code suivant :
#终极版作用域
 
name = "lzl"
 
def f1():
    print(name)
 
def f2():
    name = "eric"
    f1()
 
f2()
Copier après la connexion

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()
 
#输出:lzl
Copier après la connexion

Oui, 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
Copier après la connexion

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)]
Copier après la connexion

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]))
 
# &lt;class &#39;list&#39;&gt;
# &lt;class &#39;function&#39;&gt;
Copier après la connexion

li La valeur de retour de la première
#lambada 面试题
 
li = [lambda :x for x in range(10)]
 
res = li[0]()
print(res)
 
#输出:9
Copier après la connexion
fonction

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!

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les avantages et les inconvénients des modèles ? Quels sont les avantages et les inconvénients des modèles ? May 08, 2024 pm 03:51 PM

Quels sont les avantages et les inconvénients des modèles ?

Comment télécharger Deepseek Xiaomi Comment télécharger Deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

Comment télécharger Deepseek Xiaomi

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Jul 01, 2024 am 07:22 AM

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3 Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3 May 06, 2024 pm 03:52 PM

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM May 06, 2024 pm 04:43 PM

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM

Un guide complet sur le débogage et l'analyse des fonctions Golang Un guide complet sur le débogage et l'analyse des fonctions Golang May 06, 2024 pm 02:00 PM

Un guide complet sur le débogage et l'analyse des fonctions Golang

Comment lui demandez-vous Deepseek Comment lui demandez-vous Deepseek Feb 19, 2025 pm 04:42 PM

Comment lui demandez-vous Deepseek

Comment enregistrer la fonction d'évaluation Comment enregistrer la fonction d'évaluation May 07, 2024 am 01:09 AM

Comment enregistrer la fonction d'évaluation

See all articles