رفتن به مطلب اصلی

فاصله گذاری

بحث فاصله گذاری یکی از مهمترین بخش های پایتون هست که کمتر به اون دقت میشه. البته خیلی ساده و پیش پا افتاده هست و شما بعد خوندن این متن متوجه میشید که داستان از چه قراره. ولی اگر همین مورد رو رعایت نکنید (مخصوصا توی shell و کنسول)، می بینید که برنامتون درست کار نمیکنه. مثال زیر رو در نظر بگیرید:

x = 5
y = 10
z = 55
if x > y:
print('x az y bozorg tare')
if x > z:
print('x az z bozorg tare')
else:
print('x az z kouchik tare')

توی کد بالا، اومدیم یک if رو توی یک if دیگه گذاشتیم. به نظر شما if اولی اجرا میشه؟ جواب منفیه. حالا که if اجرا نمیشه، else اجرا میشه یا نه؟

اینجاست که بحث مفهوم فاصله گذاری خیلی مهمه. اگر دقت کنید، اولین if هیچ فاصله ای از گوشه نداره، پس else مربوط به اون هم نباید هیچ فاصله ای داشته باشه از گوشه. طبق این استدلال، else اجرا نمیشه. یعنی کد باید به شکل زیر باشه تا else برای اولین if باشه:

x = 5
y = 10
z = 55
if x > y:
print('x az y bozorg tare')
if x > z:
print('x az z bozorg tare')
else:
print('x az z kouchik tare')

حالا این کد رو در نظر بگیرید:

x = 5
y = 10
z = 55
if x > y:
print('x az y bozorg tare')
if x > z:
print('x az z bozorg tare')

طبق این کد، if اولی اجرا نمیشه، ولی if دوم چطور؟ اجرا میشه؟

خیر، دومی اجرا نمیشه چون if دوم داخل if اول هستش. یعنی جزو دستورات داخل if اول هست. برای اینکه هر دو if اجرا بشن، باید کد شبیه زیر باشه:

x = 5
y = 10
z = 55
if x > y:
print('x az y bozorg tare')
if x > z:
print('x az z bozorg tare')

فکر کنم راجع به فاصله گذاری توضیحاتی دادم که یکم گیج کننده باشه. ولی دیدین که توی if های تو در تو یا به اصطلاح (nested) خیلی مهمه که رعایت کنیم فاصله از گوشه رو. حالا راهکار چیه برای اینکه این دوتا مورد قاطی نشن. بهترین راه حلی که میتونم بهتون بگم اینه که هیچوقت توی کد، دکمه Tab رو با Space قاطی نکنین. یعنی برای خودتون قانون بذارین که سطح اول کد هیچ فاصله ای از گوشه نداشته باشه. اگر مثلا یک if تو در تو داشتین، چهارتا Space میزنم. اگر دوتا if تو در تو داشتم، هشت تا Space میزنم و ... . اینطوری دیگه همه چیز تحت کنترله.

یک راه دیگه هم هست اینکه از IDE های مختلف مثل VSCode یا Jupyter Notebook استفاده کنین که آموزش نصب اون توی درس نصب پایتون و Anaconda به صورت جدا گذاشته شده.