Python-bezogene Einführung in die Namensbindung
Pythons Namensbindung
In Python werden Objekte über Namen verknüpft und referenziert. Python führt Namen durch Namensbindungsoperationen ein.
Der sogenannte Codeblock in Python ist ein Programm, das als Ausführungseinheit dient. Zum Beispiel: Module, Funktionen, Klassendefinitionen. Befehle, die in einer interaktiven Umgebung eingegeben werden, sind ebenfalls eine Art Codeblock. Eine Python-Skriptdatei ist ebenfalls ein Codeblock. Wenn wir außerdem die Option -c in der Befehlszeile verwenden, ist der angegebene Befehl ebenfalls ein Codeblock. Die an die integrierten Funktionen eval() und exec() übergebenen String-Parameter sind ebenfalls eine Art Codeblock.
Codeblöcke werden in Form von Ausführungsrahmen ausgeführt. Ein Ausführungsrahmen enthält einige Verwaltungsinformationen und kann zum Debuggen verwendet werden. Der Ausführungsrahmen gibt außerdem an, wo und wie der nächste Code ausgeführt wird, nachdem der aktuelle Codeblock ausgeführt wurde.
Scope in Python definiert die Sichtbarkeit eines Namens innerhalb eines Codeblocks. Wenn eine lokale Variable in einem Codeblock definiert ist, ist der Gültigkeitsbereich der lokalen Variablen der Codeblock, in dem sie sich befindet. Wenn diese Definition innerhalb eines Funktionskörpers auftritt, erstreckt sich der Gültigkeitsbereich dieser Variablen auf jeden in dieser Funktion enthaltenen Codeblock. Wenn jedoch innerhalb eines in dieser Funktion enthaltenen Codeblocks derselbe Name an ein anderes Objekt gebunden ist, gelten dies auch für externe Namen nicht in diesen Codeblock erweitert werden.
def out_func(): #a的作用域在out_func这个函数中 a = 0 b = 0 def in_func(): #a的作用域从out_func扩展到了in_func中,因为in_func这个代码块包含在out_func中 print(a) #out_func函数中的b不能扩展到in_func中,因为在in_func中,b重新绑定到了不同的对象上,所以在out_func中的b的作用域不能扩展到in_func中。 b = 1
In Python können in Klassencodeblöcken definierte Namen nur in der Klasse sichtbar sein und der Bereich der Namen in der Klasse kann nicht auf Methoden in der Klasse erweitert werden. Wenn Generatorausdrücke und Listenerweiterungen in einer Klassendefinition vorkommen, können Namen in der Klasse nicht in diese Ausdrücke erweitert werden, da Listenerweiterungen und Generatorausdrücke mithilfe des Funktionsbereichs implementiert werden.
class C: a = 0 # 在列表表达式中,a会因为未定义而抛出NameError异常 b = list(a + i for i in range(10)) def method(self): #由于定义在类中的名字不能扩展到方法中,所以下面的语句是错误的,会抛出a未定义的NameError异常 print(a)
Wenn ein Name in einem Codeblock verwendet wird, wird der nächstgelegene umschließende Bereich analysiert, um den Namen zu finden. Die Menge aller dieser im aktuellen Codeblock sichtbaren Bereiche wird als
-Umgebung des aktuellen Codeblocks bezeichnet.
Die Beziehung zwischen Namensbindung und Geltungsbereich
Wenn ein Name an einen Codeblock gebunden ist, es sei denn, der Name ist als nicht lokal deklariert (die Funktion der nicht lokalen Deklaration besteht darin, die Variable im Der äußere Bereich wird vor dem globalen Bereich aufgelöst. Andernfalls ist der Name lokal für diesen Codeblock. Wenn ein Name an die Modulebene gebunden ist, ist der Geltungsbereich des Namens global und die Variable ist eine globale Variable (Variablen im Modul sind lokale Variablen für das Modul und für Codeblöcke im Modul handelt es sich dann um eine globale Variable). . Wenn ein Name in einem Codeblock verwendet wird, aber nicht innerhalb des Codeblocks definiert ist, ist die Variable eine freie Variable.
Ausnahmen im Zusammenhang mit der Namensbindung
Wenn der Name bei der Namenssuche nicht gefunden wird, wird eine NameError-Ausnahme ausgelöst, wenn der Name auf eine lokale Variable verweist, diese jedoch nicht gefunden wurde Wenn Sie an diese lokale Variable gebunden sind, wird eine UnboundLocalError-Ausnahme ausgelöst (UnboundLocalError ist eine Unterklasse von NameError).
Situationen, in denen Namensbindungsverhalten auftritt
Die Hauptverhaltensweisen, in denen Namensbindungsverhalten auftritt, sind:
Normalerweise ist der Parametername bei der Übergabe von Parametern an eine Funktion derselbe wie der übergebene. Objektbindung
Bei Verwendung der Importanweisung zum Importieren bindet die from...import *-Anweisung alle Namen im importierten Modul, die importiert werden können
Wenn die Klasse ist definiert
Wenn die Funktion definiert ist
Wenn die Zuweisungsoperation ausgeführt wird
In der for-Anweisung der for-Schleife
Wie in with Anweisung Hinter
danach wie in der Expect-Anweisung
Falle der Namensbindung in Python
In Python führen einige Regeln der Namensbindung bei der Verwendung von Namen manchmal zu unverständlichen Fehlern erscheinen, insbesondere für Benutzer mit Erfahrung in C, C++ und Java.
Unabhängig davon, wo im aktuellen Block der Namensbindungsvorgang in Python stattfindet, verwendet der Verweis auf den Namen in diesem Codeblock das im aktuellen Block gebundene Objekt. Dann tritt das Problem auf: Wenn wir auf den Namen verweisen, bevor die Namensbindungsoperation ausgeführt wird, tritt ein Fehler auf und es wird eine UnboundLocalError-Ausnahme ausgelöst.
>>> a = 10 >>> def function(): print(a) a = 20# a的绑定操作发生在print之前 >>> function() Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> function() File "<pyshell#4>", line 2, in function print(a) UnboundLocalError: local variable 'a' referenced before assignment
In Python können lokale Variablen in einem Codeblock den Bindungsnamen erhalten, indem sie den gesamten Codeblock scannen. Im obigen Code wird also der Name a an den Code übergeben, wenn der Blockscan ausgeführt wird wurde gefunden, aber der Bindungsvorgang für den Namen a ist noch nicht erfolgt, daher ist ein Fehler aufgetreten.
Wenn wir im obigen Code eine außerhalb definierte globale Variable benötigen, können wir sie mit der globalen Anweisung deklarieren. Die Funktion der globalen Anweisung
>>> a = 10 >>> def function(): global a print(a) a = 20#这里并不引入新的名字,而是将全局变量a绑定到20上 >>> function() 10 >>> a 20
besteht darin, dass nachfolgende Verweise auf das durch diese Anweisung deklarierte Objekt den Namen im Namespace der obersten Ebene verwenden. Der Namespace der obersten Ebene umfasst den globalen Namespace und den integrierten Namespace. Wenn er nicht gefunden wird, wird der integrierte Namespace durchsucht. Die globale Anweisung muss vor der Verwendung des Namens stehen.
Wenn eine freie Variable im umschließenden Bereich eine globale Deklaration enthält, gilt die freie Variable als global.
Eingebauter Namespace
Bei der Suche nach dem integrierten Namespace wird auf den Namen __builtins__ im globalen Namespace des aktuellen Codeblocks zugegriffen. Dieser Name verweist auf ein Namenswörterbuch oder ein Modul. Im Modul __main__ bezieht sich __builtins__ auf die integrierten Modul-Builtins. Wenn es sich jedoch in anderen Modulen befindet, bezieht sich __builtins__ auf das Namenswörterbuch des Builtins-Moduls.
Hinweis:
In der Implementierung von CPython können Sie die Variable __builtins__ nicht manuell ändern. Wenn Sie den Namen in diesem integrierten Namensraum überschreiben müssen, müssen Sie das integrierte Modul importieren und ändern Sie dann die entsprechenden Eigenschaften.
Das obige ist der detaillierte Inhalt vonPython-bezogene Einführung in die Namensbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

Die Hauptgründe für den Fehler bei MySQL -Installationsfehlern sind: 1. Erlaubnisprobleme, Sie müssen als Administrator ausgeführt oder den Sudo -Befehl verwenden. 2. Die Abhängigkeiten fehlen, und Sie müssen relevante Entwicklungspakete installieren. 3. Portkonflikte müssen Sie das Programm schließen, das Port 3306 einnimmt, oder die Konfigurationsdatei ändern. 4. Das Installationspaket ist beschädigt. Sie müssen die Integrität herunterladen und überprüfen. 5. Die Umgebungsvariable ist falsch konfiguriert und die Umgebungsvariablen müssen korrekt entsprechend dem Betriebssystem konfiguriert werden. Lösen Sie diese Probleme und überprüfen Sie jeden Schritt sorgfältig, um MySQL erfolgreich zu installieren.

Die MySQL -Download -Datei ist beschädigt. Was soll ich tun? Wenn Sie MySQL herunterladen, können Sie die Korruption der Datei begegnen. Es ist heutzutage wirklich nicht einfach! In diesem Artikel wird darüber gesprochen, wie dieses Problem gelöst werden kann, damit jeder Umwege vermeiden kann. Nach dem Lesen können Sie nicht nur das beschädigte MySQL -Installationspaket reparieren, sondern auch ein tieferes Verständnis des Download- und Installationsprozesses haben, um zu vermeiden, dass Sie in Zukunft stecken bleiben. Lassen Sie uns zunächst darüber sprechen, warum das Herunterladen von Dateien beschädigt wird. Dafür gibt es viele Gründe. Netzwerkprobleme sind der Schuldige. Unterbrechung des Download -Prozesses und der Instabilität im Netzwerk kann zu einer Korruption von Dateien führen. Es gibt auch das Problem mit der Download -Quelle selbst. Die Serverdatei selbst ist gebrochen und natürlich auch unterbrochen, wenn Sie sie herunterladen. Darüber hinaus kann das übermäßige "leidenschaftliche" Scannen einer Antiviren -Software auch zu einer Beschädigung von Dateien führen. Diagnoseproblem: Stellen Sie fest, ob die Datei wirklich beschädigt ist

MySQL kann ohne Netzwerkverbindungen für die grundlegende Datenspeicherung und -verwaltung ausgeführt werden. Für die Interaktion mit anderen Systemen, Remotezugriff oder Verwendung erweiterte Funktionen wie Replikation und Clustering ist jedoch eine Netzwerkverbindung erforderlich. Darüber hinaus sind Sicherheitsmaßnahmen (wie Firewalls), Leistungsoptimierung (Wählen Sie die richtige Netzwerkverbindung) und die Datensicherung für die Verbindung zum Internet von entscheidender Bedeutung.

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

MySQL hat sich geweigert, anzufangen? Nicht in Panik, lass es uns ausprobieren! Viele Freunde stellten fest, dass der Service nach der Installation von MySQL nicht begonnen werden konnte, und sie waren so ängstlich! Mach dir keine Sorgen, dieser Artikel wird dich dazu bringen, ruhig damit umzugehen und den Mastermind dahinter herauszufinden! Nachdem Sie es gelesen haben, können Sie dieses Problem nicht nur lösen, sondern auch Ihr Verständnis von MySQL -Diensten und Ihren Ideen zur Fehlerbehebungsproblemen verbessern und zu einem leistungsstärkeren Datenbankadministrator werden! Der MySQL -Dienst startete nicht und es gibt viele Gründe, von einfachen Konfigurationsfehlern bis hin zu komplexen Systemproblemen. Beginnen wir mit den häufigsten Aspekten. Grundkenntnisse: Eine kurze Beschreibung des Service -Startup -Prozesses MySQL Service Startup. Einfach ausgedrückt, lädt das Betriebssystem MySQL-bezogene Dateien und startet dann den MySQL-Daemon. Dies beinhaltet die Konfiguration

Die MySQL -Leistungsoptimierung muss von drei Aspekten beginnen: Installationskonfiguration, Indexierung und Abfrageoptimierung, Überwachung und Abstimmung. 1. Nach der Installation müssen Sie die my.cnf -Datei entsprechend der Serverkonfiguration anpassen, z. 2. Erstellen Sie einen geeigneten Index, um übermäßige Indizes zu vermeiden und Abfrageanweisungen zu optimieren, z. B. den Befehl Erklärung zur Analyse des Ausführungsplans; 3. Verwenden Sie das eigene Überwachungstool von MySQL (ShowProcessList, Showstatus), um die Datenbankgesundheit zu überwachen und die Datenbank regelmäßig zu sichern und zu organisieren. Nur durch kontinuierliche Optimierung dieser Schritte kann die Leistung der MySQL -Datenbank verbessert werden.
