کلیپ ۸: دامنه متغیرا (تمرین)
به برنامه زیر دقت کنین. بدون وارد کردن این کدا تو vscode حدث بزنین که خروجی این برنامه چی میتونه باشه؟
پاسخ: ۳۵. اتفاقی که تو این برنامه افتاده اینه که:
- تو خط اول age برابر با ۲۵ تعریف شده،
- تو خط دوم یه تابع تعریف شده که مقدار age رو برمیگردونه،
- تو خط چهارم مقدار age به ۳۵ تغییر کرده،
- به تابع پرینت دستور پرینت گرفتن از نتیجه تابعage_return رو دادم که اونم قراره آخرین مقداری که به age اختصاص داده شده رو پرینت بگیره که برابر ۳۵ است.
به برنامه زیر دقت کنین. بدون وارد کردن این کدا تو vscode حدث بزنین که خروجی این برنامه چی میتونه باشه؟
خروجی این برنامه میشه ۴۵. حالا بیاین ببینیم چطور به این عدد میرسیم. کاری که این برنامه انجام میده این شکلیه:
۱. در اولین خط متغیر گلوبالِ برابر ۲۵ قرار داده شده.
۲. بعدش، و توی تعریف تابع، یه متغیر لوکالِ ایجاد شده و برابر با ۴۵ قرار داده شده.
۳. بعد از تعریف این تابع، به متغیر که بصورت گلوبال تعریف شده مقدار جدید ۴۵ داده میشه.
۴. حالا با اجرای خط آخر و اجرا تابع مون، صرف نظر از مقدار وارد شده در خط اول که یه متغیر گلوباله، مقدار محلی متغیر به نمایش در میاد.
به برنامه زیر دقت کنین. این برنامه واسه خط آخر خطای NameError: name ‘age’ is not defined داده. ببینین مشکلش چیه و چطور میتونیم طوری رفعش کنیم که خط آخرمون بدرستی کارکنه.
این خطا وقتی رخ میده که از متغیری استفاده شده باشه که قبلا تعریف نشده. دلیلش اینه که ما متغیر age توی یه تابع تعریف کردیم. یعنی بصورت محلی تعریف شده اما از متغیر age بصورت گلوبال پرینت گرفتیم. حل این مشکل به دو شیوه انجام میشه. یکی اینکه متغیر age رو گلوبال کنیم که البته استاد ماش همدانی فرمودن که کار درستی نیست و نباید ازش استفاده کنیم اما چون میخوایم شما رو با این مفهوم آشنا کنیم روش حلش رو واستون میاریم:
اما تو روش دوم میتونیم خروجی تابعمونُ توی یه متغیر به نام age ذخیره کنیم. اینجوری، ما دو تا متغیر همنام داریم، اما متغیرِ داخل تابع میشه متغیر محلی و متغیر بیرون تابع میشه گلوبال. حالا دیگه میتونیم از متغیر گلوبال مون پرینت بگیریم.اینجوری:
درباره مرتضی بُنجَخی
مرتضی یه معلمه که عاشق یاد دادن و یاد گرفتنه. از 13 سالگیش زبان خونده والان دانشجوی دکترای آموزش زبان انگلیسی تو دانشگاه حکیم سبزواریه. از سال 93 رسما داره زبان درس میده و از سال 94 مدیر آموزشی یه آموزشگاه زبانه. علاوه بر زبان انگلیسی تو کار با کامپیوتر، HTML، CSS ،JS و پایتونم آشنایی داره و در حال حاضر داره دوره های بین المللی رو واسه کاربرای ایرانی دوبله میکنه.
نوشته های بیشتر از مرتضی بُنجَخی
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.