ホームページ >バックエンド開発 >Python チュートリアル >変数を作成し、その変数を参照として使用すると、なぜ混乱が生じる可能性があるのでしょうか?

変数を作成し、その変数を参照として使用すると、なぜ混乱が生じる可能性があるのでしょうか?

PHPz
PHPzオリジナル
2024-07-31 06:39:221304ブラウズ

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 などの名前の変数の内容ではなく、リテラル "html1"、"html2"、"html3"、および "html4" として評価されます。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。