Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah mencipta pembolehubah dan menggunakan pembolehubah itu sebagai rujukan boleh menyebabkan kekeliruan?
Dalam skrip Python, saya ingin menguji rentetan HTML yang berbeza menggunakan logik yang sama. Pendekatan saya adalah untuk mengulangi julat untuk mencipta berbilang tika pembolehubah rentetan HTML, tetapi ia tidak berfungsi seperti yang diharapkan.
# DO NOT DO THIS for i in range(1, 5): html = f"html{i}" soup = BeautifulSoup(html, "html.parser") print('----', soup)
Tingkah laku yang saya perhatikan adalah disebabkan oleh cara rentetan terformat f"html{i}" ditafsirkan. Dalam kod saya, f"html{i}" menilai kepada literal "html1", "html2", "html3" dan "html4" berbanding kandungan pembolehubah bernama html1, html2, dsb.
Python tidak menggantikan f"html{i}" secara automatik dengan nilai pembolehubah yang namanya dicipta secara dinamik seperti html1 atau html2. Sebaliknya, ia menilai rentetan sebagai corak tetap yang terdiri daripada awalan "html" diikuti dengan nilai i.
Jika saya ingin menggunakan kandungan pembolehubah yang dipratakrifkan html1, html2, dsb., saya perlu mendapatkan semula nilainya secara eksplisit, contohnya menggunakan kamus untuk memetakan nama rentetan kepada kandungan sebenar mereka.
Berikut ialah contoh yang menggambarkan ini:
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)
Tentukan Pembolehubah:
Kamus untuk Carian Boleh Ubah:
Lelaran Pada Kekunci:
Menghuraikan dan Mencetak:
---- Test 1 ---- Test 2 ---- Test 3 ---- Test 4
Pendekatan ini secara dinamik mengakses kandungan pembolehubah berdasarkan indeks lelaran dan mencetak kandungan yang dimaksudkan dengan betul.
Atas ialah kandungan terperinci Mengapakah mencipta pembolehubah dan menggunakan pembolehubah itu sebagai rujukan boleh menyebabkan kekeliruan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!