„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 01.08.2024
Durchsuche:329

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, z. B. html1 oder html2. Stattdessen wird die Zeichenfolge als festes Muster ausgewertet, das aus dem Präfix „html“ und dem Wert von i besteht.

Wenn ich den Inhalt der vordefinierten Variablen html1, html2 usw. verwenden möchte, muss ich deren Werte explizit abrufen, z. B. 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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/doridoro/why-creating-a-variable-and-using-that-variable-as-reference-can-lead-to-confusion-311i?1Falls vorhanden Verstoß, wenden Sie sich zum Löschen bitte an [email protected]
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3