eshpilen
جمعه 01 بهمن 1389, 20:30 عصر
test1.py
import test2
i=402
test2.f()
input('...')
test2.py
def f():
print(i)
با اجرای test1.py ما با خطای global name 'i' is not defined مواجه میشیم.
چطور میشه به متغییرهای گلوبال برنامه در ماجول import شده دسترسی داشت؟
بنده فعلا از این روش استفاده میکنم:
test2.i=i
test2.f()
کلا هم بنظرتون استفاده از این روش بخاطر استفاده از متغییرهای گلوبال برای انتقال اطلاعات بین ماجول اصلی و توابع موجود در ماجول های import شده احتمالا از نظر اصول طراحی نرم افزار ایراد داره؛ نه؟ البته روشی که بنده استفاده میکنم ظاهرا اون حالت رو نداره. من یکسری توابعی در یک ماجول دارم که از پارامترهای مشترکی استفاده میکنن که از برنامهء اصلی به این روش میگیرن، و نمیخوام در هر بار اجرای هر تابع مجبور باشم این متغییرها رو بهشون پاس کنم. البته احتمالا تعریف بصورت یک کلاس، بجای توابع گلوبال در یک ماجول، راهکار اصولی هست.
بجاش چه روشی رو پیشنهاد میکنید؟
import test2
i=402
test2.f()
input('...')
test2.py
def f():
print(i)
با اجرای test1.py ما با خطای global name 'i' is not defined مواجه میشیم.
چطور میشه به متغییرهای گلوبال برنامه در ماجول import شده دسترسی داشت؟
بنده فعلا از این روش استفاده میکنم:
test2.i=i
test2.f()
کلا هم بنظرتون استفاده از این روش بخاطر استفاده از متغییرهای گلوبال برای انتقال اطلاعات بین ماجول اصلی و توابع موجود در ماجول های import شده احتمالا از نظر اصول طراحی نرم افزار ایراد داره؛ نه؟ البته روشی که بنده استفاده میکنم ظاهرا اون حالت رو نداره. من یکسری توابعی در یک ماجول دارم که از پارامترهای مشترکی استفاده میکنن که از برنامهء اصلی به این روش میگیرن، و نمیخوام در هر بار اجرای هر تابع مجبور باشم این متغییرها رو بهشون پاس کنم. البته احتمالا تعریف بصورت یک کلاس، بجای توابع گلوبال در یک ماجول، راهکار اصولی هست.
بجاش چه روشی رو پیشنهاد میکنید؟