نامهای t-in هنگام راهاندازی مفسر پایتون ایجاد میشون کلاس برنامه نویسی ایلام د و هرگز حذف نمیشوند. فضای نام جهانی برای یک ماژول زمانی ایجاد می شود که تعریف ماژول در آن خوانده شود. به طور معمول، فضاهای نام ماژول نیز تا زمانی که مفسر خارج شود باقی می ماند. عبارات اجرا شده توسط فراخوانی سطح بالای مفسر، یا از فایل اسکریپت خوانده می شوند یا به صورت تعاملی، بخشی از یک ماژول به نام __main__ در نظر گرفته می شوند، بنابراین فضای نام جهانی خود را دارند. (نامهای داخلی در واقع در یک ماژول نیز زندگی میکنند؛ به این حالت داخلی میگویند.)
فضای نام محلی برای یک تابع هنگام فراخوانی تابع ایجاد کلاس برنامه نویسی ایلام میشود و زمانی که تابع استثنایی را که در تابع مدیریت نمیشود برمیگرداند یا ایجاد میکند، حذف میشود. (در واقع، فراموش کردن راه بهتری برای توصیف آنچه در واقع اتفاق میافتد خواهد بود.) البته، فراخوانهای بازگشتی هر کدام فضای نام محلی خود را دارند.
دامنه یک منطقه متنی از یک برنامه پایتون است که در آن فضای نام مستقیماً قابل دسترسی است. "دسترسی مستقیم" در اینجا به این معنی است که یک ارجاع غیرمجاز به یک نام سعی می کند نام را در فضای نام پیدا کند.
اگرچه دامنه ها به صورت استاتیک تعیین می شوند، اما به کلاس برنامه نویسی ایلام صورت پویا مورد استفاده قرار می گیرند. در هر زمان در طول اجرا، 3 یا 4 محدوده تو در تو وجود دارد که فضای نام آنها مستقیماً قابل دسترسی است:
درونیترین محدوده، که ابتدا جستجو میشود، حاوی نامهای محلی است
دامنه هر توابع محصور که با شروع با نزدیکترین محدوده محص کلاس برنامه نویسی ایلام ور جستجو میشود، حاوی نامهای غیرمحلی و غیرکلی است.
دامنه بعدی تا آخر شامل نام های جهانی ماژول فعلی است
بیرونی ترین محدوده (آخرین جستجو شده) فضای نامی است که شامل نام های داخلی است
اگر نامی جهانی اعلام شود، آنگاه همه ارجاعات و تکالیف مستقیماً به محدوده بعدی تا آخرین حاوی نامهای جهانی ماژول میروند. برای اتصال مجدد متغیرهایی که خارج از درونی ترین محدوده یافت می شوند، می توان از عبارت غیرمحلی استفاده کرد. اگر غیرمحلی اعلام نشود، آن متغیرها فقط خواندنی هستند (تلاش برای نوشتن روی چنین متغیری به سادگی یک متغیر محلی جدید در درونیترین محدوده ایجاد میکند و متغیر بیرونی با همان نام را بدون تغییر میگذارد).
معمولاً محدوده محلی به نام های محلی ت آموزش برنامه نویسی کودکان و نوجوانان ابع فعلی (از نظر متنی) ارجاع می دهد. خارج از توابع، محدوده محلی به فضای نامی مشابه با دامنه جهانی کلاس برنامه نویسی ایلام ارجاع می دهد: فضای نام ماژول. تعاریف کلاس ها فضای نام دیگری را در محدوده محلی قرار می دهند.
مهم است که بدانیم دامنه ها به صورت متنی تعیین می کلاس برنامه نویسی ایلام شوند: دامنه جهانی یک تابع تعریف شده در یک ماژول، فضای نام آن ماژول است، مهم نیست که از کجا یا با چه نام مستعار تابع نامیده می شود. از سوی دیگر، جستجوی واقعی نامها به صورت پویا و در زمان اجرا انجام میشود – با این حال، تعریف زبان به سمت وضوح نام ثابت در زمان «کامپایل» در حال تغییر است، بنابراین به وضوح نام پویا تکیه نکنید! (در واقع، متغیرهای محلی قبلاً به صورت ایستا تعیین شده اند.)
یک ویژگی خاص پایتون این است که - اگر هیچ عبارت جهانی کلاس برنامه نویسی ایلام یا غیرمحلی در کار نباشد - انتساب به نام ها همیشه در درونی ترین محدوده قرار می گیرد. تکالیف داده ها را کپی نمی کنند - آنها فقط نام ها را به اشیا متصل می کنند. همین امر در مورد حذف ها نیز صادق است: عبارت del x اتصال x را از فضای نامی که توسط محدوده محلی ارجاع داده شده است حذف می کند. در واقع، تمام عملیاتهایی که نامهای جدید معرفی میکنند، از محدوده محلی استفاده میکنند: به ویژه، عبارات import و تعاریف تابع، نام ماژول یا تابع را در محدوده محلی متصل میکنند.
عبارت global را می توان برای نشان دادن اینکه متغیرهای خاص کلاس برنامه نویسی ایلام در محدوده جهانی زندگی می کنند و باید در آنجا بازگردند استفاده شود. عبارت غیرمحلی نشان می دهد که متغیرهای خاص در یک محدوده محصور زندگی می کنند و باید در آنجا بازگردند.
9.2.1. مثال محدوده ها و فضاهای نام
این مثالی است که نشان میدهد چگونه به دامنهها و فضاها Ilam programming class ی نام مختلف ارجاع داده شود و چگونه سراسری و غیرمحلی بر اتصال متغیر تأثیر میگذارد: