Heim >Backend-Entwicklung >Python-Tutorial >Funktionsumfang in Python

Funktionsumfang in Python

不言
不言Original
2018-05-07 13:56:361183Durchsuche

Dieser Artikel stellt hauptsächlich den Funktionsumfang in Python vor, der einen bestimmten Referenzwert hat. Jetzt können Freunde in Not darauf verweisen.

In Python ist eine Funktion ein Effekt. Dieser Artikel konzentriert sich auf die Einführung des Funktionsumfangs in Python. Freunde, die interessiert sind, sollten einen Blick darauf werfen

In Python ist eine Funktion ein Bereich

name = 'xiaoyafei'
def change_name():
  name = '肖亚飞'
  print('在change_name里的name:',name)
change_name() # 调用函数
print("在外面的name:",name)

Die laufenden Ergebnisse sind wie folgt:

Name im Änderungsnamen: Xiao Yafei
Name außerhalb: xiaoyafei

Lassen Sie uns noch einmal versuchen, wie man in verschachtelten Funktionen sucht?

age = 15
def func():
  print('第一层age:',age) # 第一层age: 15
  def func2():
    age = 73
    print("func2中的age:",age) # func2中的age: 73
    def func3():
      age = 84
      print("func3中的age:",age) # func3中的age: 84
    func3() # 调用func3函数
  func2() # 调用func2函数
func()

Im Über den verschachtelten Funktionen kann gut erklärt werden, dass eine Funktion ein Bereich ist. Ändern wir also jetzt den Code ein wenig, um die Situation zu sehen?

age = 15
def func():
  print('第一层age:',age) # 第一层age: 15
  def func2():
    print("func2中的age:",age) # func2中的age: 15 # 看到没有,如果当前作用域里没有age变量,那么它就会往上找
    def func3():
      age = 84
      print("func3中的age:",age) # func3中的age: 84
    func3() # 调用func3函数
  func2() # 调用func2函数
func()

Also, zu diesem Zeitpunkt hat jemand gesagt, dass sich viel Unsinn herausgestellt hat Also möchte ich fragen: In der oben genannten verschachtelten Funktion gibt es keine Altersvariable in func2. Wie findet sie also die globale Variable age = 15?

An dieser Stelle Wir müssen uns die Suchreihenfolge des Bereichs ansehen:

Variabler Bereich LEGB

  • L:locals Der Namespace innerhalb der Funktion, einschließlich lokaler Variablen und tatsächlicher Parameter

  • E:enclosing Der Namespace der externen verschachtelten Funktion, also der angrenzenden vorherigen Ebene, zum Beispiel: wenn keine Altersvariable vorhanden ist func2, es wird zu func gehen, um dies zu finden

  • G: globale globale Variable

  • B: Der Namespace der integrierten integrierten Module

Ähm, lassen Sie uns zunächst verstehen, was ein Namespace ist.

In einem Namespace werden, wie der Name schon sagt, Namen gespeichert gespeichert? Beispielsweise wird x = 1, 1 im Speicher gespeichert. Wo wird also der Variablenname x gespeichert? Der Namensraum ist der Ort, an dem die Bindungsbeziehung zwischen dem Namen x und 1 gespeichert wird Namensräume werden in die folgenden drei Typen unterteilt:

    lokal: ist der Namensraum innerhalb der Funktion, einschließlich lokaler Variablen und formaler Parameter
  • Globals: globale Variablen, der Namespace des Moduls, in dem die Funktion definiert ist
  • builtins: der Namespace des integrierten Moduls
  • Die Der Geltungsbereich verschiedener Variablen ist unterschiedlich, da sich diese Variable im Namensraum befindet.

Der Geltungsbereich ist der Geltungsbereich

    Globaler Geltungsbereich: globales Überleben, globale Gültigkeit
  • lokaler Geltungsbereich: Temporäres Inventar, teilweise gültig
  • Nehmen wir ein Beispiel von
>>> x = 1
>>> id(1)
1576430608

mit L --> > G --> B-Regeln Suche, das heißt: Wenn es nicht lokal gefunden wird, wird es lokal durchsucht (z. B. Schließungen). in integrierten Funktionen.

Verwandte Empfehlungen:


Einführung in Funktionen in Python

Das obige ist der detaillierte Inhalt vonFunktionsumfang in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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