Heim  >  Artikel  >  Backend-Entwicklung  >  LEGB-Reihenfolge der Python-Funktionsbereiche

LEGB-Reihenfolge der Python-Funktionsbereiche

高洛峰
高洛峰Original
2017-03-02 16:47:001161Durchsuche

In diesem Artikel wird die Suchreihenfolge des Python-Funktionsbereichs als Referenz vorgestellt. Der spezifische Inhalt lautet wie folgt:

1 Was ist LEGB?
L:interner Umfang der lokalen Funktion
E:interner Umfang der umschließenden Funktion und eingebettete Funktion
G:globaler globaler Bereich
B:eingebauter integrierter Bereich

2.Wofür wird LEGB verwendet?
Warum müssen wir das einführen? usw. Wie findet Python sie? Und in welcher Reihenfolge sucht Python? Hier ist eine Erklärung der Reihenfolge

3. Wie ist die Reihenfolge? Genau wie der Name ist Pythons Suche in Funktionen in 4 Typen unterteilt, die LEGB genannt werden, was genau ist entsprechend der Suche in dieser Reihenfolge.

Zuerst ist es lokal, zuerst wird innerhalb der Funktion gesucht

Dann wird es umschlossen und dann zwischen dem Inneren der Funktion und der eingebetteten Funktion gesucht (bezieht sich auf die erneute Definition einer Funktion innerhalb der Funktion)
Zweitens ist es global, suchen Sie nach global
und schließlich eingebaut, eingebauter Bereich

4. Beispiel
ex1

passline = 60

def func(val):
  if val >= passline:
    print('pass')
  else:
    print('failed')

func(89)  

'''''''''''' 
pass
[Finished in 0.2s] 
''''''''''''

Die Python-Funktion sucht zunächst nach „lokal“. Es gibt keine Definition der Passline im lokalen Variablenbereich Es gibt keine eingebettete Funktion in der Funktion. Zu diesem Zeitpunkt beginnt Python, nach der globalen Definition von passline zu suchen.

ex2

def Max(val1, val2):
  return max(val1, val2)

print(Max(90, 100))

'''''''''
100
[Finished in 0.1s]
'''''''''

Die Max-Funktion ruft direkt eine andere auf Funktion mit dem Namen max() (beachten Sie, dass die Groß- und Kleinschreibung der beiden Funktionen unterschiedlich ist). Diese Funktion wurde nicht definiert, gehört jedoch zum vierten Typ, den wir oben erwähnt haben, und gehört zur integrierten Funktion, bei der es sich um eine Funktion handelt in der Python-Standardbibliothek integriert und kann direkt aufgerufen werden. Der letzte Schritt besteht darin, hier zu finden

Beim zweiten Typ handelt es sich um eine eingebettete Funktion. Auch wenn eine Funktion innerhalb der Funktion erneut definiert wird, wird zunächst geprüft, ob in der lokalen Funktion eine Definition vorhanden ist. und dann schauen Sie sich die Funktion an. Gibt es eine Definition für diesen Typ, der „Closure“ genannt wird? Ich hoffe, Sie werden ihn lesen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Weitere Artikel zur LEGB-Reihenfolge des Python-Funktionsumfangs finden Sie auf der chinesischen PHP-Website!



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn