در این محتوا در مورد متغیرها و کلا Data type ها صحبت میکنیم. میخواهیم بگوییم که:
- انواع متغییر ها در پایتون یعنی چه؟
- به چه دردی میخورد؟ کارایی آن چیست؟
- آن را چگونه تعریف میکنید؟
- چگونه برای آن مقدار در نظر میگیرید یا اینکه نحوه نامگذاری این متغیرها باید به چه صورت باشد؟
- از چه نامهایی میتوانیم استفاده کنیم و از چه نامهایی نمیتوانیم و نباید استفاده کنیم؟
- انواع مختلف این data را با همدیگر بررسی خواهیم کرد و یاد میگیریم که چگونه این dataها را به همدیگر تبدیل کنیم.
- ممکن است این نکته را شنیده باشید که زبان پایتون یک زبان dynamically type است.میخواهیم بگوییم که اصلا منظور از این dynamically type چیست و چرا چنین نامی روی آن قرار دادند؟
- در نهایت هم برای جمعبندی تمام این موارد یک مثال کوچکی را با همدیگر پیادهسازی خواهیم کرد که بتوانیم همه موارد را پوشش دهیم.
اولین بحثی که باید در مورد آن صحبت کنیم این است که اصلا متغیرها در پایتون یعنی چه و اصلا چه کار میکند و کار آن چیست؟
متغیر ها در پایتون چه هستند؟
اجازه دهید که یک مثال ساده برای آن بیان کنیم.

این تصویر را مشاهده کنید. این Data ما در اصل همان اطلاعات ما هستند. data به معنی اطلاعات است. هر نوعی میتواند باشد و فرقی ندارد. میتواند یک تاریخ باشد، میتواند یک عدد باشد، میتواند یک متن باشد، اصلا تفاوتی ندارد. این data درون یک ظرف قرار میگیرد که به آن variable یا همان متغیر میگویند.
به عنوان مثال میتوانید کمد لباسهای درون منزلتان را در نظر بگیرید. لباسهای شما حکم data را دارند. گفتیم که data میتواند هر چیزی باشد. لباس شما حکم آن data را دارد و آن کمدی که لباس درون آن قرار میگیرد، حکم متغیر را دارد. شما از مغازه لباس را میخرید.
Data ایجاد شده است. لباس را میآورید در متغیر (کمد) نگهداری میکنید و متغیر هم در اینجا وجود دارد. بعدا که به آن لباس نیاز داشتید، آن را از کمد برمیدارید و استفاده میکنید. دقیقا مانند همین متغیرها که اگر بعدا به این data نیاز داشتید، به متغیر سر میزنید و آن data مورد نیازتان را دریافت میکنید.
یک مثال دیگر مثالی است که همه ما تقریبا با آنها کار کردیم. متغیرهای ریاضی را داریم. اگر یادتان باشد برای مثال میگفتیم x مساوی ۲ است و y مساوی ۳ است و بعد میگفتیم برای مثال x+y*… همه اینها را حساب میکردیم، آن x و y د اصل همان متغیرهای ما بودند که یک سری اطلاعاتی را که در آنجا عدد بود، درون خودشان نگهداری میکردند و بعدا از آنها استفاده میکردیم.
اما چگونه میتوانیم یک متغیر را تعریف کنیم؟ در مورد آن توضیح خواهم داد.
نرم افزار ویژوال استودیو کد را باز میکنیم. پروژههای قبلی که باز بودند را میبندیم.
یک folder هم در صفحه دسکتاپ به نام python-projects ایجاد میکنیم آن را داخل نرمافزار ویژوال استودیو کد میآوریم.
یک file جدید برای پایتون ایجاد میکنیم.

نام آن را main.py قرار میدهیم.

متغیر چگونه تعریف میشود؟ دقیقا مانند متغیرهای ریاضی تعریف میشود. مثلا میگفتیم x=100. در اینجا هم به همین صورت است. میگوییم x=100
بعد میگوییم همین x را print کند. کلیک راست میکنیم و Run Python File in Terminal را میزنیم.

در خروجی عدد ۱۰۰ را مشاهده میکنید.

دقیقا مانند متغیرهای ریاضی با آن برخورد میکنیم. بسیار ساده است.
یک متغیر دیگر تعریف میکنیم. y=200
برای خروجی گرفتن میگوییم x+y را برای ما چاپ کند. و بعد میگوییم Run Python File in Terminal کند.

عدد 300 در خروجی برای ما چاپ میشود.

حتی این متغیرها میتوانند تغییر پیدا کنند. مثلا در خط اول که x را ۱۰۰ گذاشتیم، در خط پنجم میگوییم x را تغییر دهد و ۱۵۰ بگذارد. دوباره Run Python File in Terminal میکنیم.

در خروجی ۳۵۰ را چاپ میکند. میتوان گفت که هر کاری که در ریاضی انجام میدادیم، در اینجا هم قابل انجام دادن است.

برای مثال در اینجا x را مساوی با y قرار میدهیم. یعنی چه؟ یعنی مقدار y را درون مقدار xبریزد.
x یک ظرف اطلاعاتی است که مقدار عدد ۱۰۰ را درون خودش نگهداری کرده است و عدد خودش ۱۰۰ است و عدد y هم ۲۰۰ است. الان گفتیم که x را تغییر دهد و مقدار y را درون مقدار x بریزد. از آن خروجی میگیریم.
خروجی عدد ۴۰۰ است. به چه دلیل؟ x برابر با ۱۰۰ بود. y برابر با ۲۰۰ بود. x مساوی با y شد. یعنی ۲۰۰ درون x ریخته شد و مقدار x تغییر کرد. ۲۰۰ به اضافه ۲۰۰ هم میشود ۴۰۰.
اما اکنون میخواهیم یک نوع دیگر برای تعریف کردن متغیر را بیان کنیم و توضیح دهیم که چگونه میتوانیم این کار را انجام دهیم.
به خط ۱ و ۳ توجه کنید که نوشتیم x=100 و y=200
در خط ۱۰ میگوییم یک خط جداکننده را print کند.
در خط ۱۲ میگوییم x و y را همزمان تعریف کند و x را عدد ۴۰۰ و y را عدد ۵۰۰ تعریف کند.
مشاهده کنید که به ترتیب تعریف شدند و x میشود ۴۰۰ و y میشود ۵۰۰. به ترتیب قرار دادیم.
حال در خط ۱۴ میگوییم عدد … را print کند …
البته در خط ۱۲ بهتر است x و y را تغییر دهیم و برای مثال w و z میگذاریم که x و y که در خطهای ۱ و ۳ تعریف شده بودند، تغییر نکنند.

برای مثال میگوییم w را برای ما چاپ کند. کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

عدد ۴۰۰ را برای ما برمیگرداند.

میگوییم به جای w، z را برگرداند. کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

مشاهده میکنیم که ۵۰۰ را برمیگرداند.

cls را تایپ میکنیم تا این قسمت پاک شود.
یک بار دیگر Run Python File in Terminal را انتخاب میکنیم.
۴۰۰ در خروجی به دلیل مجموع x و y بود که کاری با آن نداریم و بعد از آن هم یک خط قرار دادیم. عدد ۵۰۰ هم که z است.
اما اکنون میخواهیم چیز دیگری را نمایش دهیم. خط ۱۰ را کپی میکنیم و در خط ۱۶ پیست میکنیم.
در خط ۱۸ یک متغیر تعریف میکنیم. مثلا میگوییم myNumber و مقدار آن را ۱۰۰ میگذاریم.
اکنون میخواهیم آن را تغییر دهیم. میگوییم myNumber را تغییر دهد و مقدار آن را myNumber – 2 بگذارد. چه اتفاقی میافتد؟ میگوید myNumber را داریم. عدد آن ۱۰۰ است. میگوید ۲ تا از آن کم کند که میشود ۱۰۰-۲ و آن را درون خود myNumber بریزد. در اصل ۹۸ میشود.
حال آن را چاپ میکنیم. میخواهیم myNumber را print کند. کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

مشاهده میکنید که عدد ۹۸ در خروجی چاپ شده است.

بنابراین ما با انواع متغییر ها در پایتون و نحوه تعریف آنها آشنا شدیم. ابتدا نام متغیر را در نظر میگیریم و نام ظرف اطلاعاتی مورد نظرمان را مینویسیم و علامت assignment مساوی را قرار میدهیم و مقدار را برای آن در نظر میگیریم. نکته بعدی که میخواهیم در مورد آن صحبت کنیم، بحث نامگذاری است. در پروژهها و به طور کلی در هر پروژهای که میخواهید کار کنید، از x و y استفاده نمیکنیم. واقعا کار اشتباهی است.
فرض کنید شما درون یک شرکت کار میکنید که دادههای حسابداری آنها به صورت ماهانه در زونکنهایی قرار میگیرد و باید به جای استفاده از متدهای روز دنیا تکنولوژی را کنار بگذاریم و از آن زونکنها و روش قدیمیتر استفاده کنیم، این زونکنها با لیبلهایی که بر روی آنها قرار میگیرد، شناسایی میشوند.
برای مثال یک لیبل روی آن به تاریخ آبان ماه ۱۳۶۰ قرار دارد. با استفاده از این لیبلها و با استفاده از نام آن زونکن شما میتوانید به اطلاعات آن موقع دسترسی داشته باشید. اگر نام آن متناسب با آن ماه نباشد، مثلا یک تاریخ اشتباهی را بزنید، اطلاعات مورد نظر درست دریافت نمیشود و این کار بیشتر گمراهکننده میشود.
بنابراین برای نامگذاری متغیرهایمان باید از یک سری قواعد استفاده کنیم. البته تبعیت کردن از این قواعد لزومی ندارد و حتما اجباری نیست. البته ما یک سری استثناهایی را داریم. اما به صورت کلی اگر بخواهیم بگوییم، بحث نامگذاری متغیرها از اهمیت بسیار بسیار بالایی برخوردار است. یک سری قواعد نیز وجود دارد که باید از آنها استفاده کنیم و تبعیت کنیم. اینها بایدها و نبایدهای نامگذاری است و باید تبعیت کنیم.
اول اینکه نامهایی برای انواع متغییر ها در پایتون در نظر میگیریم، حتما باید یا با حروف یا با آندرلاین (_) آغاز شود. یعنی مثلا myNumber یا باید با حرف شروع شود یا اینکه ابتدای آن یک آندرلاین (_) قرار دهیم. آن را به _myNumber تغییر میدهیم که به مشکل نخوریم. آن را دوباره اجرا میکنیم.

مشاهده میکنید که هیچ مشکلی پیش نمیآید. اما اگر با عدد یا با کاراکترهای خاص شروع کنیم، با مشکل مواجه میشود.

برای مثال در ابتدای _myNumber یک عدد 9 هم اضافه میکنیم. مشاهده میکنیم که به ما error میدهد و رنگ آن قرمز میشود. میگوید اصلا نمیتوانیم چنین چیزی را قرار دهیم. کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

SyntaxError را در خروجی مشاهده میکنید. با مشکل مواجه میشود. شما نباید یک چنین نامگذاری را داشته باشید. یا باید با حرف شروع شود یا اینکه اول آن علامت _ قرار بگیرد. دوباره آن را به _myNumber تغییر میدهیم و یک بار دیگر اجرا میکنیم.

اکنون مشاهده میکنیم که مشکلی را نشان نمیدهد. البته این نکته را بگویم که عدد میتواند درون آن باشد ولی نمیتواند با عدد شروع شود. برای مثال در اینجا یک متغیر دیگر تعریف میکنیم و نام آن را _myNumber2 میگذاریم و هیچ مشکلی پیش نمیآید. اصلا مشکلی ندارد. مقدار آن را هم ۵۰ میگذاریم و در خط ۲۵ هم میگوییم myNumber2 را برای ما در خروجی چاپ کند. با تایپ cls هم terminal را پاک میکنیم.

حال آن را اجرا میکنیم.
مشاهده میکنید که عدد ۵۰ چاپ میشود و مشکلی ندارد.

عدد 2 میتواند درون نام متغیر باشد ولی نمیتوانیم نام متغیر را با عدد شروع کنیم. نکته دیگری که وجود دارد، این است که نامهای متغیرهای ما case sensitive است یعنی به حروف بزرگ و کوچک حساسیت دارند.
برای مثال myNumber2 را یک بار دیگر تعریف میکنیم و میگوییم mynumber2 که در آن N با حرف بزرگ به n با حرف کوچک تغییر کرده است. این دو با همدیگر متفاوت هستند. مثلا مقدار _mynumber2 را ۵۱ میگذاریم. در خط ۲۶ print(_myNumber2) و در خط ۲۷ print(_mynumber2) را داریم. از آن خروجی میگیریم.

مشاهده میکنید که ۵۰ و ۵۱ در اینجا برای ما لاگ میخورد.

میخواهیم بگوییم این دو تا متغیر over write نمیشود. مثلا متغیر دومی که گذاشتیم (خط ۲۴)، متغیر بالایی (خط ۲۲) را over write نمیکند و مقدار آن را جایگزین نمیکند. زیرا اصلا با همدیگر فرق دارند.
پس ما تا اینجای کار یک سری نکات را یاد گرفتیم. اول اینکه نام انواع متغییر ها در پایتون باید شامل حروف، آندرلاین و اعداد باشد و نمیتواند با عدد شروع شود و باید یا با حرف و یا با آندرلاین شروع شود. هم اینکه کاراکتر خاص را درون آن استفاده نکنیم.
برای مثال ما نمیتوانیم بگوییم me@name مساوی با یک عددباشد. این مشکل دارد. میگوییم me@name را print کند. مشاهده میکنیم که این با error مواجه میشود که همان syntax error است.

دوباره آن را اجرا میکنیم.

مشاهده میکنید که باز هم syntax error را دریافت میکنیم. چرا؟ زیرا این @ اصلا مشکل دارد. از @ نمیتوانیم استفاده کنیم. خطوط ۲۹ و ۳۰ را پاک میکنیم که مشکلی وجود نداشته باشد.

حال به سراغ مبحث بعدی میرویم. یک file جدید ایجاد میکنیم.
نام آن را NameConventions.py میگذاریم.

منظور از NameConventions چیست؟
اجازه دهید cls را تایپ کنیم و Terminal را پاک کنیم و آن را ببندیم.

یک سری قرارداد را برای نامگذاری متغیرها در جوامع برنامهنویسی در نظر گرفتند. منظور چیست؟ به عنوان مثال فرض کنید میخواهیم متغیری تعریف کنیم که نام ما را در خودش ذخیره کند. برای مثال مینویسیم my_name به این snake case میگویند. مقدار آن را Mohammad میگذاریم. در مورد این ” (double quotation) صحبت میکنیم. یک کامنت هم در اینجا مینویسیم که snake case variable
به این حالت snake case میگویند.

یا اینکه با چیزهایی که تاکنون یاد گرفتیم صحبت کنیم و به جای my_name بنویسیم my_age و مقدار آن را 23 قرار دهیم. یک نوع نامگذاری است. هم میتوانید از آن استفاده کنید و هم میتوانید استفاده نکنید. بستگی به شما دارد.
اما قواعدی که در اینجا در فایل main.py بررسی کردیم را باید رعایت کنیم.
یک سری قراردادها داریم. قرارداد بعدی که وجود دارد، مثلا همین my_age را میخواهیم تعریف کنیم. یک حالت دیگر تحت عنوان camel case وجود دارد که به صورت myAge مینویسیم. A با حرف بزرگ است. مقدار آن را هم ۲۳ میگذاریم. به این حالت هم حالت camel case variable naming میگویند. Naming را در انتهای کامنت خط اول هم اضافه میکنیم.

قرارداد دیگری هم تحت عنوان lower case داریم که به صورت myage مینویسیم.
منتها در بعضی جاها ما exception یا استثنا داریم . برای مثال یک عدد PI داریم که مقدار ان 3.14 بود . ثابت عددپی را به صورت حروف بزرگ مینویسیم.
یک حالت دیگر هم داریم و به آن upper camel case می گویند . برای مثال در خط 3myAge را نگاه می کنیم . در camel case حرف اول (حرف شروع )به صورت حرف کوچیک نوشته می شود و حرف m در آن حرف کوچیک است و به صورت MyAge نیست .
اما در بعضی جاها ما به صورت upper camel case استفاده می کنیم . برای مثال به صورت MyAge می نویسیم و مقدار آن را 23 قرار می دهیم . به این حالت upper camel case می گویند.
یک نوع دیگر نام گذاری هم وجود دارد که معمولا می توان گفت در کدهای open source می توانید مشاهده کنید . دوتا آندرلاین پشت سر هم در ابتدای نام متغییر قرار دهیم (_) و بعد no و بعد یک آندرلاین (_) و بعد touch و بعد دو تا آندرلاین (_) در انتهای آن قرار می دهیم و مقدار آن را 2 قرار می دهیم . یک چنین نوع نام گذاری را هم داریم که معمولا در فایل های open source می توانید این نوع نام گذاری را ببینید .

استفاده بقیه روشها را هم میبینید. خود من به شخصه بیشتر از روش دوم استفاده میکنم و به صورت camel case استفاده میکنیم. شما میتوانید از روش اول استفاده کنید. روش چهارم و convention یا قرارداد نامگذاری چهارم که upper camel case است، در نامگذاری classها به کرات استفاده میشود. جلوتر در مورد classها صحبت میکنم. توضیح میدهیم که upper camel case در آنجا به چه صورت استفاده میشود.
سخن آخر اینکه شما مجاز به این هستید که هر روشی را دوست داشتید، انتخاب کنید. لزومی ندارد که حتما از این موارد پیروی کنید و تبعیت کنید. ممکن است یک شخص بگوید که میخواهم به صورت دیگری نامگذاری کنم. اصلا ایرادی ندارد. یک شخص میگوید من میخواهم مثلا my__age را به این صورت (با دو تا آندرلاین) تعریف کنم. اصلا ایرادی ندارد.
اما معمولا در زبانهای برنامهنویسی و source codeهایی که وجود دارد و به عنوان conventionهایی که به صورت رسمی بین برنامهنویسها متداول است، از همین چند روشی که بیان کردیم، استفاده میشود و ما هم سعی میکنیم که از همین روشها استفاده کنیم. اما شما حتما لزومی ندارد که از همین روشها استفاده کنید.
برای مثال این محصول یک قیمت دارد که یک عدد است. اما این محصول نام هم دارد، اینکه آیا در انبارشان موجود است یا خیر را دارد که یک Boolean است و در مورد آن صحبت میکنیم.
برای مثال لیستی از تصاویر دارد، گالری تصاویر دارد و بسیاری از چیزهای دیگر را دارد که ما هنوز در مورد آنها صحبت نکردیم. ابتدا تصمیم داشتم که یکی یکی هر کدام از این متغیرها را بررسی کنم. اما بعد گفتیم نه، بهتر است اول یک over view یا دید کلی به شما بدهم و بعد یکی یکی این نوع دادهای را با همدیگر بررسی کنیم.
ویژوال استودیو کد را باز میکنیم. یک file جدید در آن ایجاد میکنیم. نام آن را main.py قرار میدهیم.

تا اینجای کار ما با اعداد آشنا شدیم. برای مثال یک product یا محصول را در نظر بگیرید. برای مثال محصول ما python course یا دوره پایتون است. این محصول برای مثال قیمت دارد. قیمت آن را چگونه میآوریم؟ میگوییم productPrice = 100000 میگوییم type این عدد integer است.
اگر عدد 100000.500 باشد نوع دادهای float است.

با این نوع اعداد آشنا شدیم و float و int را بررسی کردیم. اما محصول ما یک نام هم دارد. اگر دقت کنید، نام یک محصول جزء رشتههای متنی است.
ابتدا متغیر آن را تعریف میکنیم. مینویسیم productName. نام متغیر (محصول) را productName قرار دادیم. اگر دقت کنید، نامهایی که قرار میدهیم، طبق قواعد نامگذاری که در جلسه گذشته با هم بررسی کردیم، داریم به صورت camel case مینویسیم. نام آن python course است.
برای نامگذاری برای دادههای متنی از quote استفاده میکنیم یا «”» double quotation یا «’» single quotation استفاده میکنیم. فعلا از «”» استفاده میکنیم. تفاوت آن را جلوتر با هم بررسی میکنیم و میگویم که چه فرقی با همدیگر دارند.
اکنون میخواهیم نام محصولمان را در اینجا بنویسیم. نام آن python Course است. ماوس را بر روی آن قرار میدهیم. مشاهده میکنیم که نوع داده را به صورت str نمایش میدهد که یعنی یک string و یک رشتهی متنی است.
میگوییم type مربوط به product name را print کند. یک اجرا از آن میگیریم.

خروجی را مشاهده میکنید که نوشته شده class str

جلوتر توضیح میدهم که چه کلاسی است.
در خط ۳ کامنت مینویسیم که آن یک عدد (number) است که در اینجا integer است. ما داده float را هم داریم. در خط ۵ کامنت مینویسیم که string است. پس ما با نوع داده عددی و رشتهای آشنا شدیم. میخواهیم یک دید کلی به شما بدهم. جلوتر به صورت مفصل در مورد همه اینها صحبت میکنم که چه کارهایی میتوانیم با آنها انجام دهیم، چه قابلیتهایی دارند و بسیاری چیزهای دیگر.
مسئله بعدی این است که آیا این دورهای که دارید، در حال برگزاری است؟ مثلا مینویسیم isRecording یعنی آیا دارد record میشود؟ یا باید بگوییم بله یا باید بگوییم خیر. ما یک نوع داده دیگر تحت عنوان boolean داریم. منظور چیست؟ true یا false؛ بله یا خیر. مثلاً میگوییم بله (true)، دارد record میشود. ماوس را روی آن نگه میداریم.

مشاهده میکنید که type آن boolean است. جلوی آن کامنت میگذاریم و میگوییم آن boolean برمیگرداند. منظور از Boolean چیست؟ بله یا خیر؛ true یا false. فقط حواستان باشد که T و F باید به صورت Upper case باشند. اگر f را به صورت lower case به کار ببریم، آن را تشخیص نمیدهد و آن را نمیشناسد و مشاهده میکنید که رنگ آن سفید شده است. باید حتما با حرف بزرگ (Upper case) نوشته شود.

نوع data دیگری که میخواهیم معرفی کنیم، چیست؟ برای مثال میگوییم product … که البته بهتر بود به جای product از واژه course یا دوره استفاده میکردیم. زیرا محصول ما دوره است. ولی اهمیت ندارد به هر حال یک محصول است.
میگوییم productTag ؛ tagهای مربوط به این محصول Tag چیست؟ نوشتههای پایین صفحه و سمت راست در تصویر زیر که نوشته شدند؛ آموزش پایتون، آموزش python، python، پایتون چیست و … هر کدام از اینها یک Tag هستند.
میتوان گفت یک آیتم معرفیکننده برای این product یا دورهای که داریم، است. در واقع یک لیست بود.
میخواهیم یک لیستی از نوع دادهای تعریف کنیم. برای این کار براکت [ ] را قرار میدهیم. برای مثال python را داخل quotation(‘) مینویسیم و با علامت «,» کاما جدا میکنیم. بعدی را python course مینویسیم، بعدی را free python course مینویسیم.
مشاهده میکنید که نوع دادهای productTag از نوع list است.

بعضا ممکن است فکر کنید که شبیه به یک آرایه است. افرادی که با زبانهای برنامهنویسی دیگری کار کردند، اینجا میگویند مشابه آرایه است اما در پایتون type آن list است.
منظور از list چیست؟ یک گروهی از دادههای مختلف را میتوانید در کنار هم داشته باشید.
سؤال: آیا میتوان در کنار این همه رشته عدد هم قرار دهیم؟ بررسی میکنیم که آیا error داریم؟ f5 را میزنیم و گزینه Python File Debug the currently active python file را انتخاب میکنیم.

مشاهده میکنیم که error نمیدهد. پس میتوانیم عدد و رشته را داخل یک list در کنار هم داشته باشیم. مشاهده میکنید که type خود productTag از نوع list است. لیستی از یک سری دادههایی است که کنار همدیگر قرار گرفتند و typeشان با همدیگر متفاوت است.

این بار میخواهیم خود productTag را در خروجی برای ما چاپ کند.
مشاهده میکنید که این لیست را برای ما میآورد: ‘python’ , ‘python course , ‘free python course’ , 3

عدد 3 را هم در آخر آورده است و هیچ اروری نداریم. ایرادی ندارد. لیستی از انواع دادهها را کنار همدیگر قرار میدهد.
باز هم این نکته را خدمت شما عرض کنم که نگران نباشید. ما الان فقط میخواهیم یک دید کلی نسبت به این متغیرها داشته باشید. انواع مختلف آن را به صورت مفصل در طول دوره آنقدر با همدیگر کار میکنیم، تا به خوبی برایتان جا بیفتد. اکنون فقط میخواهیم با آن آشنا شوید و آنها را دیده باشید.
در خط ۹ کامنت میکنیم که Type آن یک list است.

امیدوارم که همه چیز از فونت و اندازه و رنگ و بقیه موارد به اندازه باشد.
Terminal را پاک میکنیم.
نوع دادهی بعدی که میخواهیم بررسی کنیم، چیست؟ به عنوان مثال ما نمیخواهیم productName و productPrice جدا از همدیگر باشند و میخواهیم کنار همدیگر باشند. الان productName و productPrice جدا هستند. یک متغیر تعریف میکنیم و اسم آن را product میگذاریم. این product یک دیکشنری است؛ یک object است. یک آکولاد { } باز و بسته میکنیم.
داخل این آکولاد باز هم میتوانید خط ۳ و ۵ را قرار دهیم. آنها را copy میکنیم و داخل آکولاد در خط ۱۱ paste میکنیم. اما به جای مساوی دیگر از «:» استفاده میکنیم. productPrice هم دیگر به این صورت نوشته نمیشود.

باید آن را داخل «”» قرار دهید. میگویید مقدار productPrice ما ۱۰۰۰۰۰ تاست.
یا میگویید productName ما python course است.
ماوس را بر روی آن قرار میدهیم؛ میگوید type آن dictionary است.

منظور از dictionary چیست؟ در اینجا چند enter میزنیم. یک نگاه به آن بیندازید.
Syntax آن را به خوبی مشاهده کنید. ما یک آکولاد باز و بسته کردیم و داخل آن گفتیم مقدار productPrice ۱۰۰۰۰۰ است و مقدار productName هم python course است. اگ دقت کنید به صورت یک جفت کلید اصلی و مقدار تعریف شده است. میگوییم این dictionary یا این آکولاد یا به اصطلاح این objectای که داریم یک کلید اصلی دارد که بعدا در موردشان مفصل صحبت میکنیم.
میگوییم این product یک productPrice دارد که مقدار آن ۱۰۰۰۰۰ است؛ product ما یک productName دارد که مقدار آن python course است.
با product. میتوانید به آن موارد داخل آن دسترسی داشته باشید.
فعلا نمیخواهم در مورد آن صحبت کنم. فقط چشمتان با آن آشنا باشد.
حال میخواهم یکی یکی به صورت مفصل در مورد آنها صحبت کنم. data typeهای ما به این موارد ختم نمیشوند. میخواهم آرام آرام و تک به تک همه انواع مختلف data typeها را درک کنید و با آنها آشنا شوید و بتوانید از آنها به راحتی استفاده کنید.
فعلا میخواهم در مورد همین ۵ data typeای که معرفی کردم، مفصل صحبت کنم تا به خوبی متوجه شوید. منتها قبل از آن میخواهم یک نکته را بیان کنم. گفتیم که زبان پایتون یک زبان dynamically type است. منظور چیست؟
اجازه دهید یک file جدید ایجاد کنیم.

به اکسپلورر برمیگردیم. نام آن را dynamicType.py میگذاریم. میخواهیم در مورد dynamic بودن زبان پایتون صحبت کنیم و بگوییم منظور از این جمله چیست.
یک متغیر تعریف میکنیم. نام آن را myAge و مقدار آن را 23 میگذاریم. میگوییم برای ما آن را چاپ کند. میگوییم myAge را print کند. در خروجی آن را نمایش میدهم.

مشاهده میکنید که عدد 23 را برمیگرداند.

در خط بعدی میگوییم myAge را تغییر بدهد و آن را 50 کند. دوباره آن را نمایش بدهد، ذخیره و اجرا میکنیم.
مشاهده میکنید که 23 را آورده است، 50 را هم آورده است.

Cls را تایپ میکنیم.

تغییر دادن مقدار عددی یک متغیر امکانپذیر و درست است. اما بحثی که پیش میآید این است که شما در زبان پایتون حتی میتوانید type یک متغیر را تغییر دهید. یعنی چه؟
به عنوان مثال میگوییم مقدار myAge میشود Mohammad. غیرمنطقی است ولی امکانپذیر است. مشاهده میکنید که type آن str (یک رشته) است.

Type آن در بالا عدد بود. میخواهیم در خروجی آن را چاپ کند. کلیک راست میکنیم و Run Python File in Terminal را انتخاب میکنیم.
23، 50 و Mohammad را در خروجی داریم. چه اتفاقی افتاد؟ مگر متغیر myAge عدد نبود؟ چرا یکدفعه string شد؟ چرا یکدفعه متن شد؟ ایراد کار کجاست؟ این ایراد کار نیست. اصلا ایرادی نیست. اینکه میگویند یک زبانی dynamically type است، یعنی اینکه متغیر شما میتواند در لحظه تغییر حالت دهد. گفتیم انواع متغییر ها در پایتون چیست؟ مانند یک سری ظرف هستند که میتوانند تغییر حالت دهند. یعنی اینکه در آنِ واحد مثلا یک جا عدد (int) یا float است،

یکدفعه int میشود.

یکدفعه string میشود.

حتی تغییر میکند.myAge یکدفعه dictionary میشود. میگوییم myAge = { “test” : 45 }
الان مشاهده میکنیم که dict شده است.

این همان متغیر است اما همچنان type آن دارد تغییر میکند. برای همین به آن dynamic type میگویند.
در بالای کدها یک کامنت قرار میدهیم؛ میخواهیم بگوییم در مورد dynamic type language صحبت کنیم. یک زبان برنامهنویسی که dynamic type است. منظور آن را فکر میکنم متوجه شده باشید. این ظرف اطلاعاتی ما در لحظه میتواند تغییر حالت دهد. مثلا یکجا float است، بعد int میشود، بعد رشته (str) میشود و یکدفعه کلا عوض میشود و dictionary میشود. حتی میتواند list شود. هر تغییری که نیاز داریم، میتواند اتفاق بیافتد.
به دلیل اینکه میتواند به صورت dynamic، type خود را تغییر دهد، به آن dynamic میگویند.
بسیاری از زبانهای دیگر مانند C++ یا C# هستند که به آنها static type میگویند.
منظور چیست؟ میگوید شما باید حتما نوع متغیر را تعریف کنید که به آن مقدار دهید. اگر مقدار آن را تغییر دهید، مثلا myAge را میگوییم float است.
به عنوان مثال داریم میگوییم. در اینجا خط سوم را به عدد صحیح (int) و خط ۶ را به float تغییر میدهیم.

وقتی در یک خط int باشد، نمیتوانید در خطهای بعدی آن را float کنید. و در خط بعدی نمیتوانید آن را به رشته تبدیل کنید. اجازه این کار را نداریم. برای همین به آنها static type میگویند.
به عنوان مثال در آن زبانها داده را چگونه تعریف میکنند؟ مثلا میگویند ما یک type ِ integer داریم که اسم آن را yourAge میگذاریم و برای مثال مقدار آن را 23 میگذاریم.
بعد از آن شما نمیتوانید بگویید که برای مثال yourAge مساوی است با یک رشته.
به شما یک error میدهد. اجازه دهید این دو خط آخر را به کامنت تبدیل کنیم.

نحوه تعریف کردن data در C++ و C# به این صورت است. اول نوع آن را مشخص میکنیم، بعد متغیر را قرار میدهیم و مقدار میدهیم. الان دیگر این متغیر باید int باشد و باید یک عدد صحیح باشد و دیگر نمیتوانیم مقدار آن را تغییر دهیم.
اما در زبانهایی مانند پایتون که dynamic type هستند، یا زبان JavaScript که dynamic است، یک متغیر تعریف میکنیم، به سادگی میتوانید type آن را تغییر دهید.
امیدوارم که تفاوت آنها را درک کرده باشید. ما با این موارد کاری نداریم. ما میخواهیم کلا بحث dynamicها را مطرح کنیم.
یک مسئله دیگر این است که ما در python یک type دیگری تحت عنوان None را هم داریم. یک کامنت میگذاریم و یک خط جداکننده قرار میدهیم تا کلا از مثال product جدا باشد.
یک متغیر تعریف میکنیم، اسم آن را testValue میگذاریم. مقدار آن را None میگذاریم. توجه کنید که None هم یک نوع مقدار یا data type است. مشاهده میکنید که NoneType را نشان میدهد.

منظور از این None چیست؟
مثال دیگری را بیان میکنیم. برای مثال یک شخص را در نظر بگیرید. مثلاً میگوییم personName یا نام شخص؛ برای مثال نام شخص Mohammad است. نام خانوادگی یا personFamily مقدار Ordookhani را میگیرد. آیا آقای Ordookhani فرزندی دارد؟ personChild؛ میگوییم خیر، فرزندی ندارد.
به جای اینکه 0 بگذاریم یا اینکه یک رشته خالی «’ ‘» قرار دهیم، میگوییم None؛ خیر، فرزندی ندارد.
اما به چه دلیل اینطور است؟ برای مثال فرض کنید این personChild قرار است نام آنها را بگیرد. برای مثال اسم آن test است.
اگر نبود، 0 نمیگذاریم یا یک رشته خالی قرار نمیدهیم، میگوییم None و N هم حتما باید Upper case باشد.
اکنون میخواهیم personChild را print کند.

یک اجرا از آن میگیریم.

مشاهده میکنید که None را برمیگرداند.

به یک روش دیگر آن را run میکنیم؛ میگوییم python را بیاورد

اکنون در تصویر مشاهده میکنید که علامت <<< آمده است. الان هر چیزی قرار دهیم، برای مثال name = “milad”
اگر در خط بعد name را فراخوانی کنیم، milad را میآورد.

حال میگوییم Name=None
در خط بعد name را میزنیم. مشاهده میکنیم که در خط بعد چیزی را نشان نمیدهد یعنی None است، خالی یا پوچ است و هیچ مقداری نیست. چیزی را نمیتواند برگرداند.

یک python جدید ایجاد میکنیم.

در اینجا میگوییم برای مثال یک name در نظر بگیرد که همان personChild باشد، مقدار آن را یک رشته خالی (” “) میگذاریم. در خط بعد personChild را فراخوانی میکنیم.
رشته خالی را برای ما برگردانده است. اما ما نمیخواهیم آن را برگرداند. میخواهیم هیچ کاری نکند. وقتی آن اسم را نداریم، چیزی نباید برگرداند. میگوییم مقدار personChild را None قرار دهد. حال اگر personChild را فراخوانی کنیم، هیچ کاری برای ما انجام نمیدهد.

زیرا مقدار آن None (پوچ یا خالی) است. پس چرا آن را تعریف میکنیم؟ میخواهیم قابل دسترس باشد، میخواهیم متغیر وجود داشته باشد که بعدا بتوانیم دوباره آن را فراخوانی کنیم.
یک توضیح در خط ۲۴ برای آن مینویسیم؛ None Means EMPT یعنی خالی؛ یعنی پوچ؛ چیزی در آن نیست.
برای این که به personChild فقط دسترسی داشته باشیم، این متغیر باید وجود داشته باشد. برای اینکه فقط وجود داشته باشد، مقدار آن را None میگذاریم.

Type آن را هم مشاهده کردید. میگوییم type ِ personChild را برای ما در خروجی نمایش دهد.

Type آن را مشاهده میکنید که None Type است. Type آن None است و چیزی درون آن نیست.
خدمات پیشنهادی مرتبط
در موسسه انجام پروژه های دانشجویی کارت پروژه، پروژه های شما در تمامی رشته ها در زمینه پایتون و سایر حوزه ها انجام میشود. در زیر برخی از این پروژه ها را مشاهده میکنید:
مقالات پیشنهادی پرطرفدار:
ک م م در پایتون (به 4 روش مختلف)
نحوه کامنت کردن در پایتون (آموزش تصویری کامنت گذاری)
حلقه for در پایتون + نحوه استفاده و مثال کاربردی
ارسال پاسخ