ホームページ >バックエンド開発 >Python チュートリアル >変数を作成し、その変数を参照として使用すると、なぜ混乱が生じる可能性があるのでしょうか?
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)
変数の定義:
変数検索用の辞書:
キーの反復処理:
解析して出力:
---- Test 1 ---- Test 2 ---- Test 3 ---- Test 4
このアプローチは、反復インデックスに基づいて変数の内容に動的にアクセスし、意図した内容を正しく出力します。
以上が変数を作成し、その変数を参照として使用すると、なぜ混乱が生じる可能性があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。