متغیّرها

حال بیایید از یک متغیّر در hello_world.py استفاده کنیم. یک خط به ابتدای فایل خود بیفزایید و خط دوم را این‌گونه تغییر دهید:

1
2
message = "Hello Python world!"
print(message)

برنامه را اجرا کنید تا ببینید چه رخ می‌دهد. باید خروجی‌ای مشابه قبل ببینید:

1
Hello Python world!

یک متغیّر به نام message اضافه کرده‌ایم. هر متغیّر با یک مقدار در ارتباط است که اطّلاعات مرتبط با آن متغیّر را در بر دارد. در این مورد مقدارْ همان متنِ “Hello Python world!” است.

اضافه کردن یک متغیّر کارِ مفسّر پایتون را کمی سخت‌تر می‌کند. هنگامی که مفسّر خط اوّل را پردازش می‌کند متغیّر message را به متن “Hello Python world!” ارتباط می‌دهد و زمانی که به خطّ دوم رسید مقداری را که به message اختصاص یافته چاپ می‌کند.

حال با تغییر دادن hello_world.py برای چاپ پیام دیگری، این برنامه را تغییر می‌دهیم. یک خطّ خالی به فایل خود اضافه کنید و این دو خطّ جدید را اضافه کنید:

1
2
3
4
message = "Hello Python world!"
print(message)
message = "Hello Python Crash Course world!"
print(message)

اکنون با اجرای hello_world.py دو خطّ زیر را در خروجی می‌بینید:

1
2
Hello Python world!
Hello Python Crash Course world!

در برنامه‌ی خود می‌توانید مقدار یک متغیّر را هر زمانی تغییر دهید و پایتون همیشه مقدار فعلی و جدید آن را در نظر خواهد گرفت.

نام‌گذاری و به‌کار‌گیری مغیّرها

هنگام استفاده از متغیّرها در پایتون باید تعداد اندکی قانون و راهنمایی را رعایت کنید. تخطّی از برخی از این قانون‌ها موجب بروز خطا خواهند شد. راهنمایی‌ها به شما کمک می‌کند تا کدی بنویسید که راحت‌تر قابل خواندن و فهمیدن باشد. قوانین زیر را در رابطه با متغیّرها حتماً به خاطر داشته باشید:

  • نام متغیّرها تنها می‌تواند شامل حروف، اعداد و زیر‌خط باشند. نام‌ها می‌توانند با حرف یا زیر‌خط و نه با عدد آغاز شوند. برای مثال می‌توانید یک متغیّر را message_1 بنامید امّا نام‌گذاری 1_message ممکن نیست.

  • گذاشتن فاصله در نام متغیّرها مجاز نیست امّا برای فاصله‌گذاری بین چند واژه در نام متغیّرها می‌توانید از زیر‌خط استفاده کنید. برای مثال greeting_message مجاز است امّا greeting message موجب خطا می‌شود.

  • از به‌کارگیری کلیدواژگان و نام توابع پایتون به عنوان نام متغیّر پرهیز کنید. به بیان دیگر از واژگانی که پایتون برای اهداف خاص برنامه‌نویسی در نظر گرفته، مانند print، برای نام‌گذاری استفاده نکنید. (ن.ک «کلیدواژگان و توابع داخلی پایتون» ص ***)

  • نام متغیّرها بهتر است کوتاه امّا گویا باشند. برای مثال name از n و student_name از s_n و name_length از length_of_persons_name بهتر است.

  • هنگام استفاده از حرف کوچک l (اِل) و حرف بزرگ O دقّت کنید چون ممکن است با اعداد 1 و 0 اشتباه گرفته شوند.

ممکن است یادگیریِ روشِ ایجاد نام‌های مناسب برای متغیّرها کمی به تمرین نیاز داشته باشد، به ویژه زمانی که برنامه‌های شما جذّاب‌تر و پیچیده‌تر می‌شوند. هر چه برنامه‌های بیشتری بنویسید و کدهای دیگران را بیشتر بخوانید در یافتن نام‌های معنادار پیشرفت حاصل خواهید کرد.

نکته
بهتر است متغیّرهای پایتون را با حروف کوچک بنویسید. استفاده از حروف بزرگ موجب خطا نمی‌شود امّا به‌کارگیری آن‌ها در نام متغیّرها معنای خاصّی دارد که در فصل‌های پایانی به آن خواهیم پرداخت.

پرهیز از نام‌گذاری اشتباه متغیّرها

هر برنامه‌نویسی اشتباه می‌کند و بیشتر آن‌ها هر روزه مرتکب اشتباه می‌شوند. هرچند برنامه‌نویسان خوب هم ممکن است خطا کنند امّا در عین حال می‌دانند چگونه به درستی آن را رفع کنند. اجازه دهید به خطایی که احتمالاً به زودی مرتکب می‌شوید و روش برطرف کردن آن نگاهی بیندازیم.

در اینجا عمداً برنامه‌ای می‌نویسیم که خطا ایجاد کند. در کد زیر واژه‌ی mesage که پررنگ نشان داده‌شده غلط املایی دارد:

1
2
message = "Hello Python Crash Course reader!"
print(mesage)

هنگامی که در برنامه‌ای خطا رخ می‌دهد مفسّر پایتون تمام تلاش خود را می‌کند تا محل وقوع آن را پیدا کند. زمانی که برنامه به درستی اجرا نمی‌شود مفسّر یک traceback ارائه می‌کند. هنگامی که مفسّر کد شما را اجرا می‌کند و در جایی به مشکل می‌خورد، Traceback پیشینه‌ای از مشکل و محلّ وقوع آن را ذخیره می‌کند. اینجا نمونه‌ای از traceback می‌بینیم که پس از اجرای برنامه با نامِ غلطِ متغیّر ایجاد می‌شود:

1
2
3
4
Traceback (most recent call last):
   File "hello_world.py", line 2, in <module>
print(mesage)
NameError: name 'mesage' is not defined

خروجی خط ۲ وقوع خطایی را در خطِّ دومِ فایلِ hello_world.py گزارش می‌دهد. مفسّرْ خطِ ۳ را برای کمک به یافتن سریع‌تر خطا و خط ۴ را برای بیان نوع خطایی که پیدا کرده تولید می‌کند. در این مورد مفسّر به خطای name error برخورده و اعلام می‌کند که متغیّر mesage که قرار است چاپ شود، قبلاً جایی تعریف نشده است. پایتون نمی‌تواند نامی را که به غلط ارائه شده تشخیص دهد. خطای نام‌گذاری معمولاً به این معنی است که یا مقدار متغیّر را پیش از به‌کارگیری آن تعیین نکرده‌ایم یا در وارد کردن نام متغیّر مرتکب اشتباه املایی شده‌ایم.

می‌دانیم که در این کد و در خطِ دوم حرف s را در نام متغیّر message جاانداخته‌ایم. مفسّر پایتون کد شما را از لحاظ املایی بررسی نمی‌کند امّا مطمئن می‌شود که متغیّرها همواره به درستی نوشته شده‌اند. برای مثال ببینید اگر واژه‌ی message را یک جای دیگر برنامه هم اشتباه بنویسیم چه رخ می‌دهد:

1
2
mesage = "Hello Python Crash Course reader!"
print(mesage)

اینجا برنامه به درستی اجرا می‌شود!

1
Hello Python Crash Course reader!

زبان‌های برنامه‌نویسی گرچه سخت‌گیرند امّا به درست‌ یا غلط نوشتن واژگان اهمّیّتی نمی‌دهند. در نتیجه نیازی نیست که املا و دستور زبان انگلیسی را هنگام نام‌گذاری متغیّرها و نوشتن کد در نظر بگیرید.

بسیاری از خطاهای برنامه‌نویسی غلط‌های املایی ساده و یک‌کاراکتری در خطّی از برنامه هستند. اگر زمان زیادی را صرف پیدا کردن چنین خطاهایی می‌کنید بدانید که با بسیاری دیگر همدردید. بسیاری از برنامه‌نویسان مجرّب و مستعد ساعت‌ها وقت صرف شکار چنین خطاهای کوچکی می‌کنند. سخت نگیرید و از آن‌ها بگذرید و بدانید که چنین خطاهایی در دوران برنامه‌نویسی شما بسیار رخ خواهد داد.

متغیّرها برچسب هستند

گاهی متغیّرها را مانند جعبه‌ای در نظر می‌گیرند که مقادیر را در آن‌ها ذخیره می‌کنید. دفعات اوّلی که از متغیّرها استفاده می‌کنید چنین طرز نگاهی سودمند است امّا این روشی دقیق برای بیان نحوه‌ی نمایش داخلی متغیّرها در پایتون نیست. بهتر است به متغیّرها به چشم برچسب‌هایی نگاه کنید که به مقادیر مختلف می‌زنید. همچنین می‌توانید بگویید که متغیّرها به مقدار مشخّصی اشاره می‌کنند.

این تمایز احتمالاً در برنامه‌های آغازین شما خیلی مهم نیست امّا بهتر است آن را زودتر فرابگیرید. ممکن است جایی به رفتار غیرمنتظره‌ی یک متغیّر بربخورید و درک صحیح و دقیق چگونگی کارکرد متغیّرها به تشخیص آنچه در برنامه رخ می‌دهد کمک می‌کند.

نکته
بهترین راه فهمیدن مفاهیم جدید برنامه‌نویسی به کار بردن آن‌ها در یک برنامه است. اگر هنگام انجام تمرین‌های این کتاب به مشکل برخوردید، ابتدا آن را رها کنید و به کار دیگری بپردازید. اگر پس از پرداختن دوباره مشکل حل نشد بخش‌های مرتبط با آن را در کتاب مرور کنید. اگر باز هم به کمک نیاز داشتید به توصیه‌های موجود در پیوست پ مراجعه کنید

خودآزمایی

برای هر تمرین یک برنامه‌ی جداگانه بنویسید. هر برنامه را با نامی ذخیره کنید که مطابق قواعد استاندارد پایتون است، از حروف کوچک و زیرخط استفاده کنید. برای مثال simple_message.py یا simple_messages.py.

Simple Message

پیامی به یک متغیّر نسبت دهید و سپس آن را چاپ کنید.

Simple Messages

پیامی به یک متغیّر نسبت دهید و آن را چاپ کنید. سپس مقدار متغیّر را به پیام جدیدی تغییر دهید و پیام جدید را چاپ کنید.