Heim >Backend-Entwicklung >Python-Tutorial >Warum kann das Erstellen einer Variablen und die Verwendung dieser Variablen als Referenz zu Verwirrung führen?

Warum kann das Erstellen einer Variablen und die Verwendung dieser Variablen als Referenz zu Verwirrung führen?

PHPz
PHPzOriginal
2024-07-31 06:39:221305Durchsuche

Why creating a variable and using that variable as reference can lead to confusion?

Einführung

In einem Python-Skript wollte ich verschiedene HTML-Strings mit derselben Logik testen. Mein Ansatz bestand darin, einen Bereich zu durchlaufen, um mehrere Instanzen der HTML-String-Variablen zu erstellen, aber es funktionierte nicht wie erwartet.

# DO NOT DO THIS

for i in range(1, 5):
    html = f"html{i}"
    soup = BeautifulSoup(html, "html.parser")
    print('----', soup)

Das Verhalten, das ich beobachtet habe, ist auf die Art und Weise zurückzuführen, wie die formatierte Zeichenfolge f"html{i}" interpretiert wird. In meinem Code ergibt f"html{i}" die Literale „html1“, „html2“, „html3“ und „html4“ und nicht den Inhalt von Variablen mit den Namen html1, html2 usw.

Python ersetzt f"html{i}" nicht automatisch durch den Wert der Variablen, deren Name dynamisch erstellt wird, wie z. B. html1 oder html2. Stattdessen wird die Zeichenfolge als festes Muster ausgewertet, das aus dem Präfix „html“ gefolgt vom Wert von i.

besteht

Wenn ich den Inhalt der vordefinierten Variablen html1, html2 usw. verwenden möchte, muss ich deren Werte explizit abrufen, beispielsweise mithilfe eines Wörterbuchs, um Zeichenfolgennamen ihrem tatsächlichen Inhalt zuzuordnen.

Hier ist ein Beispiel, das dies veranschaulicht:

from bs4 import BeautifulSoup

# Define the variables
html1 = "Test 1"
html2 = "Test 2"
html3 = "Test 3"
html4 = "Test 4"

# Store them in a dictionary for easy access
html_dict = {
    "html1": html1,
    "html2": html2,
    "html3": html3,
    "html4": html4
}

# Iterate and process each html content
for i in range(1, 5):
    key = f"html{i}"
    html = html_dict[key]
    soup = BeautifulSoup(html, "html.parser")
    print('----', soup)

Erläuterung:

  1. Variablen definieren:

    • html1, html2, html3, html4 werden mit dem Inhalt definiert, den Sie analysieren möchten.
  2. Wörterbuch für die Variablensuche:

    • html_dict wird erstellt, um die Zeichenfolgennamen ihren entsprechenden Inhalten zuzuordnen.
  3. Über Schlüssel iterieren:

    • Die Schleife generiert die Schlüssel „html1“ bis „html4“.
    • key = f"html{i}" erstellt den Schlüssel.
    • html = html_dict[key] ruft den mit dem Schlüssel verknüpften Inhalt ab.
  4. Parsen und Drucken:

    • Parst den HTML-Inhalt mit BeautifulSoup.
    • Druckt den analysierten Inhalt.

Ausgabe:

---- Test 1
---- Test 2
---- Test 3
---- Test 4

Dieser Ansatz greift basierend auf dem Iterationsindex dynamisch auf den Inhalt der Variablen zu und gibt den beabsichtigten Inhalt korrekt aus.

Das obige ist der detaillierte Inhalt vonWarum kann das Erstellen einer Variablen und die Verwendung dieser Variablen als Referenz zu Verwirrung führen?. 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