🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ امیر نیکجو
get_absolute_url
جامعه پایتون (وب) ایجاد شده در ۱۴ خرداد ۱۴۰۲

با سلام و وقت بخیر

سوالی که بنده داشتم در مورد این فانکشن هست که استاد در زمان ایمپورت کردن from django.urls import reverse

ابتدا بالا ایمپورت کردن ولی فرمودن که اگر بالا باشه باعث recursive شدن میشه و ایمپورت رو داخل تابع قرار دادن

بنده این قسمت رو متوجه نشدم. ممنون میشم دلیل و علتش رو توضیح بدید

با سپاس فراوان

زمانش در ویدیو هم 21:10

امیر نیکجو ۱۴ خرداد ۱۴۰۲، ۱۱:۳۲

سلام وقتتون بخیر

امیدوارم که حالتون عالی باشه


علت اصلی recursive شدن در ایمپورتی‌های پایتون مربوط به ساختار زبان پایتون است که به این صورت عمل می‌کند:


هنگامی که یک فایل در پایتون با دستور import فراخوانی می‌شود، ابتدا پایتون به دنبال فایل مربوط به این دستور در سیستم فایل می‌گردد. سپس، پایتون این فایل را compile می‌کند و تمام کدهای آن فایل را اجرا می‌کند.


اگر در این فایل یک دستور import دیگری به فایل دیگری وجود داشته باشد، پایتون به همان روند بالا پیروی می‌کند و آن فایل را import می‌کند. به همین ترتیب، اگر در فایل دیگری نیز دستور import به فایل اولیه وجود داشته باشد، پایتون دوباره به همان فایل برمی‌گردد و این‌کار را به صورت مستمر تکرار می‌کند.


این مسئله ممکن است زمانی رخ دهد که در چرخه ایجاد شده توسط import، همان فایلی به صورت recursive دوباره import شود که باعث شروع یک loop بی‌نهایت می‌شود و برنامه خاتمه پیدا نمی‌کند.


برای حل این مشکل می‌توانید از تکنیک‌های مختلفی مانند import با ترتیب خاص یا تغییر ساختار کد استفاده کنید. همچنین، اگر به دنبال حل این مشکل در یک پروژه‌ی بزرگ هستید، می‌توانید از ابزارهای مانند pylint استفاده کنید که می‌تواند به شما کمک کند که علت دقیق این مشکل را پیدا کرده و آن را برطرف کنید.

بهترین پاسخ
پوریا شفیعی ۱۴ خرداد ۱۴۰۲، ۱۶:۳۰