محدوده دسترسی به متغیرها در پایتون
در این بخش به بررسی مفهوم محدوده دسترسی به متغیرها در پایتون می پردازیم. یک متغیر فقط در محدوده ای که تعریف شده است قابل دسترس می باشد به این scope می گویند.
محدوده دسترسی یا همان scope محلی
به عنوان مثال هنگامی که یک متغیر داخل یک تابع تعریف می شود به محدوده محلی آن تابع تعلق دارد یعنی فقط می تواند داخل آن تابع استفاده شود.
مثال
در اینجا متغیر x
فقط داخل تابع myfunc
قابل دسترس می باشد و بیرون از تابع نمی توانید از آن استفاده کنید:
تابع داخل تابع
همانطور که قبلاً اشاره شد متغیر x
فقط داخل تابعی که در آن تعریف شده قابل دسترس می باشد، با این حال اگر داخل تابع myfunc
یک تابع دیگری تعریف کنید می توانید داخل آن تابع به متغیر x
دسترسی داشته باشید.
مثال
همانطور که در این مثال مشاهده می کنید، می توانیم داخل تابع myinnerfunc
به متغیر x دسترسی داشته باشیم:
محدوده دسترسی سراسری (Global Scope)
متغیری که داخل بدنه سورس کد پایتون تعریف می شود یک متغیر سراسری یا همان Global است. متغیر های سراسری (global) هم به صورت محلی هم سراسری در تمام بخش ها قابل دسترس هستند.
مثال
در اینجا یک متغیر خارج از تابع در بدنه اصلی سورس کد پایتون تعریف کرده ایم و این یعنی می توانیم داخل هر تابعی به آن دسترسی داشته باشیم چون متغیر x سراسری (global) است.
نحوه نام گذاری متغیرها
شما اگر دو متغیر با نام x یکی را داخل بدنه سورس کد پایتون به صورت سراسری (global) و دیگری را داخل یک تابع به صورت محلی (local) تعریف کنید، پایتون این دو متغیر x را جدا از هم تشخیص می دهد. (یعنی دو متغیر مجزا در نظر گرفته می شوند)
مثال
در اینجا تابع myfunc
مقدار متغیر x که به صورت محلی (local) داخل خودش تعریف شده را چاپ می کند و خط آخر مقدار متغیر x را که به صورت سراسری تعریف شده است را چاپ می کند:
خروجی:
200
300
کلمه کلیدی Global
اگر قصد دارید داخل یک تابع متغیر سراسری (global) بسازید که خارج از تابع به آن متغیر دسترسی داشته باشید می توانید از کلمه کلیدی global
استفاده کنید.
کلمه کلیدی global
یک متغیر سراسری می سازد.
مثال
در اینجا داخل تابع myfunc
یک متغیر x از نوع سراسری (global) ایجاد کرده ایم و در نهایت خارج از تابع آن را چاپ می کنیم:
خروجی:
300
همچنین اگر می خواهید داخل یک تابع متغیر سراسری x را که خارج از تابع داخل بدنه سورس کد پایتون تعریف شده است را صدا بزنید می توانید از کلمه کلیدی global استفاده کنید.
مثال
در اینجا مقدار متغیر سراسری x را داخل تابع myfunc تغییر می دهیم:
خروجی:
200
آیا این مطلب برای شما مفید بود ؟