"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يمكن أن يؤدي إنشاء متغير واستخدام هذا المتغير كمرجع إلى حدوث ارتباك؟

لماذا يمكن أن يؤدي إنشاء متغير واستخدام هذا المتغير كمرجع إلى حدوث ارتباك؟

تم النشر بتاريخ 2024-08-01
تصفح:728

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 وما إلى ذلك.

لا يقوم بايثون تلقائيًا باستبدال 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".
    • المفتاح = f"html{i}" ينشئ المفتاح.
    • html = html_dict[key] يسترد المحتوى المرتبط بالمفتاح.
  4. التحليل والطباعة:

    • يوزع محتوى HTML باستخدام BeautifulSoup.
    • طباعة المحتوى الذي تم تحليله.

انتاج:

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

يقوم هذا الأسلوب بالوصول ديناميكيًا إلى محتوى المتغيرات استنادًا إلى فهرس التكرار وطباعة المحتوى المقصود بشكل صحيح.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/doridoro/why-creating-a-variable-and-using-that-variable-as-reference-can-lead-to-confusion-311i?1إذا كان هناك أي التعدي، يرجى الاتصال بـ [email protected] للحذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3