کلیدواژه global در برنامه نویسی پایتون
کلیدواژه global در برنامه نویسی پایتون
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، با کلیدواژه global در برنامه نویسی پایتون، متغیر سراسری و زمان استفاده از کلیدواژه global آشنا خواهید شد.
کلیدواژه global در پایتون چیست؟
در پایتون، کلمه کلیدواژه global به شما امکان می دهد متغیر را خارج از دامنه فعلی اصلاح کنید. برای ایجاد یک متغیر سراسری و ایجاد تغییر در متغیر در یک زمینه محلی استفاده می شود.
قوانین کلیدواژه global در پایتون
قوانین کلی برای کلیدواژه global در پایتون عبارتند از:
- وقتی یک متغیر را در داخل یک تابع ایجاد می کنیم، به طور پیش فرض محلی است.
- وقتی یک متغیر را خارج از یک تابع تعریف می کنیم، به طور پیش فرض سراسری است. لازم نیست از کلیدواژه global استفاده کنید.
- ما برای خواندن و نوشتن متغیر جهانی در داخل یک تابع از کلیدواژه global استفاده می کنیم.
- استفاده از کلیدواژه global در خارج از تابع هیچ تاثیری ندارد.
استفاده از کلیدواژه global در پایتون
مثال 1: دستیابی به متغیر سراسری از داخل یک تابع
1 2 3 4 5 6 |
c = 1 # global variable def add(): print(c) add() |
هنگامی که برنامه فوق را اجرا می کنیم، خروجی به صورت زیر می باشد:
1 |
1 |
با این حال، ممکن است سناریوهایی داشته باشیم که نیاز به تغییر متغیر سراسری از داخل یک تابع داشته باشیم. به مثال 2 توجه کنید.
مثال 2: تغییر متغیر سراسری از داخل تابع
1 2 3 4 5 6 7 |
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add() |
هنگامی که برنامه فوق را اجرا می کنیم، خروجی خطای زیر را نمایش می دهد:
1 |
UnboundLocalError: local variable 'c' referenced before assignment |
این بدان دلیل است که ما فقط می توانیم به متغیر سراسری دسترسی پیدا کنیم اما نمی توانیم آن را از داخل تابع تغییر دهیم.
راه حل این کار استفاده از کلیدواژه global است.
مثال 3: تغییر متغیر سراسری از داخل یک تابع با استفاده از کلیدواژه global
1 2 3 4 5 6 7 8 9 |
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c) |
هنگامی که برنامه فوق را اجرا می کنیم، خروجی به صورت زیر می باشد:
1 2 |
Inside add(): 2 In main: 2 |
در برنامه فوق، ما c را به عنوان یک کلیدواژه global در داخل تابع ()add تعریف می کنیم.
سپس، متغیر c دو تا افزایش داده میشود، یعنی c = c + 2. بعد از آن، تابع ()add را فراخوانی می کنیم. در آخر ، متغیر سراسری c را چاپ می کنیم.
همانطور که می بینیم ، تغییر در متغیر سراسری خارج از تابع ، 2 = c نیز رخ داده است.
متغیرهای سراسری در ماژول های پایتون
در پایتون، یک ماژول مجرد را با استفاده از config.py ایجاد می کنیم تا متغیرهای سراسری و به اشتراک گذاری اطلاعات در سراسر ماژول های پایتون در همان برنامه، مورد استفاده قرار می گیرد.
مثال 4: متغیر سراسری در ماژول های پایتون
برای ذخیره متغیرهای سراسری، یک فایل config.py ایجاد کنید
1 2 |
a = 0 b = "empty" |
یک فایل update.py برای تغییر متغیرهای محلی ساخته می شود.
1 2 3 4 |
import config config.a = 10 config.b = "alphabet" |
یک فایل main.py برای تست تغییرات مقادیر ساخته می شود.
1 2 3 4 5 |
import config import update print(config.a) print(config.b) |
هنگام اجرای فایل main.py، خروجی به صورت زیر خواهد بود.
1 2 |
10 alphabet |
در بالا ، ما سه فایل ایجاد کرده ایم: config.py ، update.py و main.py.
ماژول config.py متغیرهای سراسری a و b را ذخیره می کند. در فایل update.py، ماژول config.py را وارد کرده و مقادیر a و b را اصلاح می کنیم. به همین ترتیب ، در فایل main.py، ما هر دو ماژول config.py و update.py را وارد می کنیم. در آخر، مقادیر متغیرهای سراسری چاپ و بررسی میشوند که آیا تغییر کردهاند یا اغییر نکرده اند.
متغیر سراسری در توابع تو در تو
در اینجا نحوه استفاده از یک متغیر سراسری در تابع تو در تو آورده شده است.
مثال 5: استفاده از یک متغیر سراسرس در تابع تو در تو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x) |
خروجی
1 2 3 4 |
Before calling bar: 20 Calling bar now After calling bar: 20 x in main: 25 |
در برنامه فوق، ما یک متغیر سراسری را در داخل تابع تو در تو ()bar تعریف کردیم. درون تابع foo () ،x هیچ تاثیری از کلیدواژه global ندارد.
قبل و بعد از فراخوانی ()bar، متغیر x مقدار متغیر محلی یعنی x = 20 را می گیرد. خارج از تابع ()foo، متغیر x مقدار تعریف شده در تابع نوار () یعنی x = 25 را می گیرد. این یعنی زیرا ما از کلیدواژه global در x برای ایجاد متغیر سراسری در داخل تابع ()bar (دامنه محلی) استفاده کرده ایم.
اگر در تابع ()bar تغییری ایجاد کنیم، تغییرات خارج از محدوده محلی یعنی ()foo ظاهر می شوند.
لیست جلسات قبل آموزش برنامه نویسی پایتون
- آموزش نصب و اجرای برنامه نویسی پایتون
- کلیدواژه ها و شناسه های برنامه نویسی پایتون
- دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
- متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون
- انواع داده ها در برنامه نویسی پایتون
- تبدیل نوع در برنامه نویسی پایتون
- ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
- عملگرها در برنامه نویسی پایتون
- نام و دامنه در برنامه نویسی پایتون
- دستور شرطی if…else در برنامه نویسی پایتون
- حلقه for در برنامه نویسی پایتون
- حلقه while در برنامه نویسی پایتون
- دستورات break و continue در برنامه نویسی پایتون
- دستور pass در برنامه نویسی پایتون
- توابع در برنامه نویسی پایتون
- آرگومان تابع در برنامه نویسی پایتون
- تابع بازگشتی در برنامه نویسی پایتون
- تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
- متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
یک دیدگاه
-
3 سال پیش
سلام کد ها کلا جابجا شده
خودتون ملاحضه کنید
دیدگاه شما