متغیرهای محلی در پایتون
شاید تعجب کرده باشید که چگونه می توانیم متغییر های مشابهی همچون i را در هر دو تابع PRINTMULTIPLES و PRINTMULTTABLE استفاده کنیم.
آیا هنگامی که یکی از توابع مقدار متغیر را تغیر می دهد، مشکلی ایجاد نمی شود؟
پاسخ منفی است، زیرا I در printmultiples و i در printmulttable یکسان نیستند.
متغیرهای ایجاد شده درون یک تابع، محلی هستند و شما نمی توانید به متغیر محلی از بیرون محیط تابع دسترسی داشته باشید.
یعنی مختارید که چندین متغیر با نام های مشابه داشته باشید به شرطی که آنها درون یک تابع نباشند.
نمودار پشته برای این برنامه نشان میدهد که دو متغیر با نام i، متغیرهای یکسانی نیستند.
آنها میتوانند به مقادیر متفاوتی اشاره کنند و تغییر یکی از آنها در دیگری تاثیری ندارد.
مقدار i در printmulttable از ۱ به سمت ۶ میرود.
در این نمودار این اتفاق تا زمان رسیدن به ۳ رخ داده است.
در اجرای بعدی حلقه مقدار آن ۴ خواهد بود.
هربار در طول حلقه مقدار آن printmulttable تابع printmultiples را با مقدار جاری i، به عنوان یک آرگومان فراخوانی میکند.
آن مقدار به پارامتر n انتساب می یابد.
درون تابع printmultiples مقدار i از مقدار ۱ به طرف ۶ میرود. در نموداراین اتفاق تا رسیدن به عدد ۲ رخ داده است.
تغییر این متغیر هیچ تاثیری روی مقدار i در تابع printmulttable ندارد.
داشتن متغیرهای محلی مختلف با نامهای یکسان امری کاملا قانونی و رایج است.
مخصوصا نامهایی مانند i و j که برای تکرار به عنوان متغیرهای حلقه استفاده میشوند.
اگر شما از به کاربردن آنها در یک تابع بپرهیزید فقط به جای اینکه در جای دیگری استفاده کردهاید.
ممکن است کدبرنامه را از لحاظ خواندن دشوار سازید.
یک تعمیم دیگر در پایتون
به عنوان مثال دیگری را برای تعمیم فرض کنید برنامه ای را میخواهید که جدول ضربی را در هر اندازه دلخواه چاپ کند، نه فقط یه جدول ۶ در ۶ را.
شما میتوانستید پارامتری به printmulttable اضافه کنید:
ما مقدار ۶ را با متغیر high جایگزین نمودیم. حال اگر printmulttable را با مقدار ۷ فراخوانی کنیم، جدول زیر را خواهیم داشت:
این خوب است، مگر اینکه بخواهیم جدولی به صورت مربع-با تعداد سطر و سطون مشابه-داشته باشیم.
برای این کار ما پارامتر دیگری را به printmultiples اضافه نماییم تا مشخص کنیم در جدول چند ستون باید داشته باشیم.
فقط برای شیطنت، ما این تابع را high مینامیم تا ثابت کنیم توابع مختلف میتوانند پارامترهایی با نام یکسان داشته باشند(درست مانند متغیرهای محلی).
در اینجا کد کامل برنامه پایتون را میبینیم
توجه کنید که وقتی ما یک پارامتر جدید را اضافه میکنیم باید اولین (خط تابع) را تغییر دهیم و همچنین باید کد برنامه را در مکانی که تابع فراخوانی میشود (در داخل printmulttable ) تغییر دهیم.
همانظور که انتظار داشتیم این برنامه در پایتون یک جدول مربع شکل ۷ در ۷ تولید میکند
وقتی تابعی را به طور مناسب تعمیم میدهید، برنامهای که بدست میآورید، اغلب دارای تواناییهایی است که از قبل طراحی نکرده بودید.
برای نمونه شما میبایست توجه کرده باشید، چون ab=ba، همه اقلام در جدول دوبار نشان داده شدهاند.
پس میتوانستید به وسیله چاپ تنها نیمی از جدول بقیه جوهر خود را ذخیره کنید!
نویسنده : زهرا رستمی