首頁  >  文章  >  後端開發  >  為什麼創建變數並使用該變數作為引用會導致混亂?

為什麼創建變數並使用該變數作為引用會導致混亂?

PHPz
PHPz原創
2024-07-31 06:39:221280瀏覽

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

介紹

在 Python 腳本中,我想使用相同的邏輯來測試不同的 HTML 字串。我的方法是循環遍歷一個範圍來建立 HTML 字串變數的多個實例,但它沒有按預期工作。

# DO NOT DO THIS

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

我觀察到的行為是因為格式化字串 f"html{i}" 的解釋方式造成的。在我的程式碼中, f"html{i}" 計算結果為文字“html1”、“html2”、“html3”和“html4”,而不是名為 html1、html2 等的變數的內容

Python 不會自動將 f"html{i}" 替換為動態建立名稱的變數的值,例如 html1 或 html2。相反,它將字串評估為由前綴“html”組成的固定模式,後面跟著 i.

的值

如果我想使用預定義變數 html1、html2 等的內容,我需要明確檢索它們的值,例如使用字典將字串名稱對應到其實際內容。

這是一個說明這一點的範例:

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)

解釋:

  1. 定義變數:

    • html1、html2、html3、html4 定義為您要解析的內容。
  2. 變數找字典:

    • 建立 html_dict 是為了將字串名稱對應到其對應的內容。
  3. 迭代鍵:

    • 循環產生鍵“html1”到“html4”。
    • key = f"html{i}" 建構金鑰。
    • html = html_dict[key] 檢索與該鍵關聯的內容。
  4. 解析並印出:

    • 使用 BeautifulSoup 解析 HTML 內容。
    • 列印解析的內容。

輸出:

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

這種方法根據迭代索引動態存取變數的內容並正確列印預期內容。

以上是為什麼創建變數並使用該變數作為引用會導致混亂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn