[PYTHON] Was ist ein lexikalischer / dynamischer Bereich?

Erstens gibt es zwei Arten von Bereichen.

  1. Lexikalischer Geltungsbereich
  2. Dynamischer Bereich

Jedes ist eine Spezifikation der Variablenreferenz, und der lexikalische Umfang wird in vielen wichtigen Sprachen wie Ruby, Java, Javascript und Python übernommen.

Beispiel für einen lexikalischen Umfang

Es ist sehr einfach. Siehe den Code unten.


var =  'Ich bin auf höchstem Niveau'

def a_method
  return var 
end

def b_method
  var = 'Ich bin der Inhalt des Objekts'
  return var
end

a_method 
#-> 'Ich bin auf höchstem Niveau'

Es ist natürlich, Ruby usw. zu schreiben, aber es ist nicht möglich, von a_method auf die var von b_method zu verweisen. Dies ist ein lexikalischer Bereich ... !!! Es scheint jedoch, dass es Sprachen auf der Welt gibt, in denen der Umfang der Variablen bei der Bewertung einer Funktion bestimmt wird. Es scheint, dass sie als dynamische Bereiche bezeichnet werden, aber zum Beispiel scheinen Lisp und Emacs diese Bereiche zu übernehmen.

Beispiel für einen dynamischen Bereich

Das ist nicht Ruby. Dynamischer Ruby, der einen Ruby-ähnlichen dynamischen Bereich verwendet. (Es gibt so etwas nicht, aber es ist ein geprägtes Wort.)


def a_method
  p var
end


def b_method
  var = 'Ich bin B.'
  a_method
end

def c_method
  a_method
end

b_method
#-> 'Ich bin B.'

c_method
#-> undefined variable 'var'  

Wird sein. Das heißt, der Bereich wird bestimmt, wenn Sie die *** -Funktion auswerten, nicht der Bereich, wenn Sie die Funktion definieren. *** ***

Vorteile des dynamischen Umfangs

Es scheint einfach, die Sprache w zu implementieren Warum haben Lisp, Emacs usw. es übernommen? Es scheint, dass es so geschrieben ist. Lol

Recommended Posts

Was ist ein lexikalischer / dynamischer Bereich?
Was ist eine Distribution?
Was ist ein Terminal?
Was ist ein Hacker?
Was ist ein Zeiger?
Was ist ein Entscheidungsbaum?
Was ist ein Kontextwechsel?
Was ist ein Superuser?
Was ist ein Systemaufruf?
[Definition] Was ist ein Framework?
Was ist eine Rückruffunktion?
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Was ist das Convolutional Neural Network?
Was ist ein Hund? Django-Installationsvolumen
Was ist ein Hund? Python-Installationsvolumen
Was ist ein Namespace?
Was ist copy.copy ()
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist Linux?
Was ist klass?
Was ist SALOME?
Was ist Linux?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell
Was ist ein Hund? Fordern Sie die Django-Vorlage heraus! Volumen
Es ist ein Mac. Was ist der Linux-Befehl Linux?
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell 2
Sag mir, was eine gleichwinklige Abbildung ist, Python!
Was ist Piotroskis F-Score?
Was ist ein Hund? POST-Übertragungsvolumen mit Django--forms.py
Was ist Raspberry Pi?
Was ist das Calmar-Verhältnis?
Was ist ein Hund? Startvolumen der Django-App erstellen --startapp
[PyTorch Tutorial ①] Was ist PyTorch?
Was ist Hyperparameter-Tuning?
Was ist JSON? .. [Hinweis]
Was ist ein Hund? Django App Creation Start Volume - Startprojekt
Wofür ist Linux?
Was ist Ensemble-Lernen?
Was ist TCP / IP?
Was ist ein empfohlener Motor? Zusammenfassung der Typen
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
Was ist Pythons __init__.py?
Was ist ein Iterator?
Was ist UNIT-V Linux?
[Python] Was ist virtualenv?
Für mich als Django-Anfänger (2) - Was ist MTV?
Was ist maschinelles Lernen?
Was ist der Unterschied zwischen symbolischen und harten Links?
Was ist Mini Sam oder Mini Max?