l'apprentissage python 15-- espace de noms et la portée

A. Namespace

Namespace qui est stocké avec le mappage du nom de l'objet / liant les relations locales. Pour x = 3, Python allouer l'espace mémoire pour stocker l'objet 3, le nom relation de liaison avec 3 x stockée dans
Namespace, del x efface la relation de liaison.

1.1 namespace intégré

Accompagné python interprète démarrage / arrêt et la production / récupération, il est donc le premier à être chargé namespace, utilisé pour stocker des noms intégrés, comme intégré nom de la fonction
>>> max
<Fonction intégrée max> # intégré 内建

1.2 espace de noms global

fichier Python accompagnant les produits a commencé / fini / recyclage, est le deuxième à être namespace chargé, pendant l'exécution du nom de fichier généré sera stocké dans l'espace de noms
Les noms suivants,
Le nom du module importation de N °
  x = 1 # nom variable x
  si x == 1:
    y = 2 # nom de la variable y
def foo (x): # nom de la fonction foo
  y = 1
  bar () def:
    passer
Bar Classe: # Nom de classe Bar
  passer

1.3 L'espace de nom local

En plus de la fonction d'appel / de fin génère temporairement / récupération, paramètre de fonction, définie dans le nom de la fonction sera stocké dans l'espace de noms
def foo (x):
Quand y = 3 # appeler la fonction, le code exécutera le nom de la fonction x et y sont stockés dans le nom local de la fonction dans l'espace
 
l'espace de chargement est l'ordre des noms:
Intégré espace de nom -> espace de nom global -> espace de noms local, et trouver un nom, le nom de l'un des trois doit se trouver de l'espace,
Trouvez l'ordre suivant:
Espace de noms local -> espace de noms global -> espace intégré.

deux champs d'application

2.1 portée mondiale et la portée locale

Il peut être divisé en fonction de différents noms de la portée de l'espace à trois noms dans deux domaines:

1. La portée mondiale:

Situé à l'espace de noms global, intégré dans les noms d'espace de noms appartiennent à la portée globale, le nom de la survie globale dans cette plage (à moins de supprimer, sinon le texte intégral
Membre pendant l'exécution de survie), le global valide (peut être utilisé en toute position);

2. Champ local:

Situé dans les espaces de noms locaux appartiennent à la région. Nom dans la plage de survie temporaire (qui est temporairement généré lorsque la fonction est appelée, après la fin de l'appel de fonction
Est libéré), le local (ne peut être efficace utilisé dans la fonction).

2.2 Portée et priorité nom recherche

Trouver un nom dans le champ local, la position de départ est la portée locale, donc d'abord trouver un espace de nom local est introuvable, allez trouver la portée globale: pour trouver le nom global
L'espace est introuvable, trouver l'espace de noms intégré, la fin n'a pas trouvé le jetteront une exception
def foo (x):
  Quand y = 3 # appeler la fonction, le code exécutera le nom de la fonction x et y sont stockés dans le nom local de la fonction dans l'espace
  x = 100 # Nom portée globale x
def foo ():
  x = nom de la portée locale x 300 #
  imprimer (x) # x trouver localement
foo () # 300 résultats
x = 100
def foo ():
  x = 300 # génèrent une portée locale du nom d'appel de fonction x
foo ()
imprimer (x) # x regardant la situation générale, le résultat est 100

2.3 global et non local

 

Si vous voulez changer la valeur du (type dur) local correspondant au nom du besoin global dans un monde 

x = 111  

def func ():    

  , Ltd Rejoignez libre x # x nom de l' instruction est un nom global, pas le nom du nouveau recyclage    

  x = 222  

func () 

print (x)   

nonlocal (): la valeur correspondant au nom (type dur) contenue dans la fonction de modification de fonction extérieure 

x = 0 

def f1 ():    

  x = 11    

  def f2 ():        

    nonlocal x        

    x = 22    

f2 ()    

Imprimer ( 'X en F1:', X)   F1 ()

Je suppose que tu aimes

Origine www.cnblogs.com/heirenxilou/p/12524298.html
conseillé
Classement