متغیر‌ها و کار با آن ها

مقدار یا داده یکی از تعاریف پایه ای و بنیادی بوده و همانند عدد یا حرف تعاریف متعدد و وسیعی را دارا می باشد . متغییر ها را به صورت ظرف فرض کنید تا در خطایابی مشکلی نداشته باشید هر برنامه کامپیوتری در روند اجرای خود با مجموعه ای از داده ها و اطلاعات سروکار دارد و آنها را مورد پردازش قرار داده و نتایجی را تولید می کند . یک مقدار در علم برنامه نویسی می تواند برای مثال عددی چون "۱" یا مقداری رشته ای مانند "سلام دنیا !" باشد .

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

>>> type("Hello, World!")
<type ’string’>
>>> type(17)
<type ’int’>

بجز موارد اعداد صحیح و رشته اکثر زبانهای برنامه نویسی دارای انواع دیگری چون اعداد صحیح ، اعداد بزرگ ، کاراکتر یا ... می باشد .

 

متغییر ها

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

>>> message = "Be Linux !"
>>> n = 17
>>> pi = 3.14159

در مثال بالا ۳ متغییر را با عمل مقداری دهی تعریف کرده ایم . اکنون برای مشاهده مقدار هر متغییر می توانید از دستور print استفاده کنید . این دستور مقدار هر متغییر را در خروجی چاپ می کند .

>>> print message
Be Linux !
>>> print pi
3.14159

متغیر نامی است که به یک مقدار نسبت داده می شود

در پایتون نوع داده در زمان اجرا مشخص می شود و نیازی به اعلان آن قبل از اجرا نیست.در پایتون تمامی داده ها شی (object)می باشند .برای مثال عدد 3 در پایتون یک شیء را در حافظه مشخص می کند,و متغیرها نیز نامهایی هستند که به اشیاداخل حافظه اشاره می کنند. شاید این سوال پیش بیاید که چگونه مفسر پایتون می تواند نوع داده ها را بدون اعلان اولیه تشخیص دهد!. پاسخ:

name1='saeed afshari'
name2='saeed afshari'

وقتی در پایتون انتسابهایی به صورت بالا صورت می گیرند مراحل زیر به تر تیب انجام می شوند

1.شیءsaeed afshari که مقداری از نوع رشته است به وجود می آید.

2.متغیرهای name1 ,name2 درست می شود.(اگر قبلا درست نشده باشد)

3.متغیر name1,name2 به شیء مورد نظر اشاره می کند.

شیء موردنظر باید نوع خود را بداند,برای همین منظور هر object در پایتون دارای دو فیلد هدر(header field)به نامهای طراح نوع(type designator)وشمارنده ی مراجعات(reference counter)می باشد, که طراح نوع, نوع داده را در خود ذخیره می کندوشمارنده ی مراجعات تعداد رجوع های متغیرهای متفاوت به شیء را مشخص میکند.

    • برای مثال بالا type designator=str و reference counter=2 **

با داشتن این فیلد ها در زمان اجرا مفسر می تواند نوع داده را تشخیص دهد.

 

مدیریت حافظه ی خودکار

reference counter کار زباله روبی (garbage collection) را بسیار آسان می سازد.به این صورت که وقتی reference counter مساوی صفر میشود زباله روب متوجه می شود که هیچ ارجاعی به شیء مورد نظر وجود ندارد,بنابراین شی ء را از حافظه پاک می کند.

 

نام گذاری متغییر ها

معمولا برنامه نویسان برای نام گذاری متغییر ها از اسامی استفاده می کنند که نشان دهنده کاربرد و حتی نوع متغییر می باشد . اسامی متغییر ها می تواند با طول دلخواه باشد . در نام گذاری متغییر ها استفاده از حرف و عدد مجاز است . بیاد داشته باشید که در برخی از زبانها از جمله پایتون حروف برزگ با کوچک یکسان نیستند . بنابراین متغییری با نام Joker با متغییر joker یکسان نیست و این دو ممکن است مقادیر و حتی نوع های مختلفی داشته باشند . در نام گذاری متغییر ها می توان از کاراکتر زیر خط (_) نیز استفاده کرد و معمولا در اسامی که از بیش از یک کلمه تشکیل شده باشند به کار می رود .

همچون تمام زبانهای برنامه نویسی پایتون هم قوانینی برای نام گذاری متغییر ها دارد که باید هنگام نام گذاری به آنها دقت کنید . برخی از این قوانین شامل موارد زیر است :

  • اسم متغییر باید با یک حرف شروع شود .
  • در نام گذاری مجاز به استفاده از کاراکتر های خاص چون $%^#/ و ... نیستید .
  • در نام گذاری متغییر ها نباید از اسامی رزرو شده زبان برنامه نویسی استفاده کرد . برای مثال استفاده از اسامی چون class , for , if و ... مجاز نمی باشد .

همانطور که گفتیم استفاده از اسامی رزور شده در پایتون مجاز نمی باشد . در صورت استفاده از این اسامی یا هر یک از موارد بالا برنامه از روند عادی خود خارج شده و متوقف می گردد و در اصطلاح یک خطای نحوی(مربوط به نحوه نوشتن و یا املای دستورات برنامه ) (syntax error) رخ می دهد . بیاد داشته باشید ممکن است اسمی که برای یک متغییر انتخاب می کنید تکراری نیز باشد ! در این حالت شما خطایی دریافت نخواهید کرد اما برنامه نتایجی اشتباه محاسبه خواهد کرد یا روند اجرای آن به مشکل بر خواهد خورد .

زبان پایتون دارای ۲۸ اسم رزرو شده می باشد . این اسامی یا keyword ها تشکیل دهنده ساختار کلی هر زبان برنامه نویسی می باشند .

 

اسامی رزرو شده در پایتون
raise not import for else continue and
return or in from except def assert
try pass is global exec del break
while print lambda if finally elif class

عبارات

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

برنامه یا یک اسکریپت شامل تعدادی از عبارت ها یا دستورات اجرایی پشت سر هم می باشند .

عبارات محاسباتی

هر عبارت ترکیبی از مقادیر ، متغییر ها و عملگر ها می باشد . اگر شما یک عبارت محاسباتی را به عنوان یک دستور وارد کنید مفسر مقدار آن را محاسبه و چاپ خواهد کرد .

>>> 1 + 1
2

عملگر و عملوند

عملگر در حقیقت یک سمبل یا نماد قراردادی برای نمایش اتفاق افتادن عملی خاص چون جمع یا تفریق می باشد . بدین ترتیب هر عملگر بر روی تعدادی عملوند عمل کرده و نتیجه ای را حاصل می دهد .

اولویت عملگر

زمانی که یک عبارت محاسباتی شامل چندین عملگر باشد تقدم و ترتیب اجرا عملگر ها مهم بوده و در نتیجه کلی عبارت تاثیر گذار می باشد . بنابراین برای بدست آوردن نتیجه ای یکسان و استاندارد از قوانینی برای ترتیب اجرای عملگر ها استفاده می شود . قوانین اولویت عملگر در پایتون دقیقا با قوانین علم ریاضیات یکسان می باشد .

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

 

>>> 3 ** 2 ** 2
81

در مثال فوق ابتدا عدد ۲ به توان ۲ رسیده و نتیجه یعنی ۴ محاسبه می شود . سپس عدد پایه و اصلی ۳ به توان ۴ می رسد . دقت کنید که این قانون نیز برگرفته از ریاضیات می باشد .

تقدم عملگر در زبان پایتون

۱ () [] . گروهبندی و دسترسی
۲  ! - + عملگر های یکتایی
۳ ** توان
۴ * /  % ضرب ، تقسیم ، باقیمانده
۵ + - جمع و تفریق
۶ << >> عملگر های شیفت به چپ و راست باینری
۷ < =< > => عملگرهای مقایسه ای : بزرگتر ، کوچکتر و ...
۸ == =! عملگرهای مقایسه : مساوی ، نا برابر
۹ & و منطقی باینری
۱۰ ^ یا انحصاری (XOR) باینری
۱۱ | یا منطقی باینری
۱۲ and و منطقی
۱۳ or یا منطقی
۱۴ = =+ =- =* =/ =% عملگر های مقدار دهی

عملگر های رشته

در حالت عادی و منطقی شما قادر به اعمال عملگر های محاسباتی بر روی رشته ها نیستید . برای مثال دستورات زیر همگی اشتباه بوده و باعث بروز خطای منطقی می گردند .

>>> "Hello" / 123
>>> "15" + 2
>>> ""Hello" * "World !"

نمونه خروجی :

>>> "15" + 2
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects

در پایتون 3.0

>>> "15" + 2
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    "15" + 2
TypeError: Can't convert 'int' object to str implicitly

اما برخی از عملگر های دارای معانی خاصی در مورد رشته می باشند .

اتصال دو رشته با استفاده از عملگر جمع

عملگر ترکیب دو رشته که با سمبل مربوط به عمل جمع ریاضی یا "+" نشان داده می شود دو عملوند از نوع رشته را دریافت و رشته سمت راست خود را به انتهای رشته سمت چپی خود می چسباند .

>>> fname = "Mehdi "
>>> lname = "Bayazee"
>>> fname + lname
'Mehdi Bayazee'

تکرار یک رشته با استفاده از عملگر ضرب

عملگر ضرب با سنبل "*" نیز معنی خاصی برای رشته دارد . این عملگر دو عملوند یکی از نوع رشته و دیگری از نوع عدد صحیح را دریافت و رشته را به تعداد عدد دریافت شده تکرار کرده و در قالب یک رشته واحد بر می گرداند .

>>> "Python ! " * 3
'Python ! Python ! Python ! '

عملگر ضرب در مورد رشته ها منطقی شبیه به نوع ریاضی آن دارد . ضرب دو عدد در ریاضیات را می توان بصورت جمع نشان داد . برای مثال ۴×۳ را می توان بصورت ۴+۴+۴ نمایش داد . در مورد رشته ها نیز در حقیقت برای محاسبه ضرب یک عدد در رشته ، همان رشته با تعداد عدد وارد شده باهم جمع می شود .

کامنت یا توضیحات در پایتون

با زیاد شدن حجم برنامه و کد خواندن و درک هر سطر از کد کاری سخت و زمان بر می شود . معمولا خواندن بخشی از کد یک برنامه و درک کامل آن در زمانی کم کاری سخت می باشد . به همین دلیل معمولا برنامه نویسان در هنگام نوشتن برنامه توضیحاتی را به کد برنامه اضافه می کنند که نشان دهنده کار و وظیفه بخشی از کد بوده و قابلیت اجرایی ندارد . این توضیحات در علم برنامه نویسی کامنت (comment) نام دارد . هر زبانی برای جدا کردن کامنت ها از کد اصلی معمولا از کاراکتر یا کاراکتر های خاصی استفاده می کند . کاراکتر مربوط به این کار در پایتون علامت # می باشد . هر متن نوشته شده بعد از این علامت هنگام اجرا توسط مفسر نادیده گرفته می شود .


صفحه قبلی: پایتون
صفحه بعدی: PyGTK