انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: مهیار پژوهان در 27 امرداد 1393، 03:32 بظ
-
درود
امروز تصميم گرفتم اين گزاره رو ایجاد کنم و هدف از ایجاد اين گزاره اول یادگیری مفهوم برنامه نویسی و پس از اون برنامه نويسي به يک زبان خاص هستش، چون اگه شما مفهوم یا کانسپت برنامه نويسي رو درک کنید؛ به راحتي میتونيد بين زبانهای ديگه سوییچ کنيد.
من توی اين گزاره يک نظرسنجي قرار میدم اگه بازخورد خوبی داشت ادامه ميديم اگه بازخورد خوبی هم نداشت ادامه میدیم.
سنجشها و پيشنهادهاي خودتون رو از طريق ایمیل: lxmahyar@gmail.com و یا پ.خ بفرستید.
خواهش میکنم بين پست ها چیزی ارسال نکنید تا جستارها هموار و يک دست باقی بمونه و اگر هم پرسشی داشتید در اینجا (http://forum.ubuntu.ir/index.php/topic,98362.0.html) با ما درمیون بزارید.
ویرایش شد
-
درحال حاضر پایتون یکی بهترین و آسون ترین زبانهای برنامه نویسی برای یادگیری و استفاده به صورت گسترده است، کدهای پایتون رو میشه به راحتی و خیلی مختصر و مفید بدون اینکه پیچیده باشه خوند. پایتون یک زبان گویاست به این معنی که شما میتونید با حداقل کد ممکن نسبت به زبان دیگه برنامه هاتون رو بنویسد مثل سی، جاوا و ...
پایتونیک زبان چند-سکویی (http://http://en.wikipedia.org/wiki/Cross-platform) هستش، یعنی به طور کلی همون کدی که شما در ویندوز یا لینوکس مینویسید در مک یا بیاسدی هم به راحتی فقط با کپی کردن فایل ها مورد نظر بدون نیاز به کامپایل یا ساختن(مثل سیشارپ، سیپلاسپلاس و ... که باید اول ساخته بشن) اجرا میشه
شما میتونید یک برنامه رو فقط مخصوص یک پلتفرم بنویسید ولی به این کار به ندرت نیاز پیدا میکنید چون کتابخانههای استاندارد و اکثر کتابخانه های موجود برای پایتونچند-سکویی هستند.
یکی بهترین ویژگیهای پایتون غنی بودن کتابخونههایی که درونش قرار داره(نه کتابخانه سوم-شخص)، شما با استفاده از این کتابخونه ها میتونید به راحتی یک فایل رو از اینترنت دانلود کنید یا فایل فشرده شده رو بیرون بکشید یا یک وب سرور ایجاد کنید و همه اینا فقط با چند خط کد امکان پذیره و علاوه بر کتابخونه های که خودش داره هزارتا دیگه کتابخانه-سومشخص داره که امکاناتِ پیچیده و فراتری رو در اختیار شما قرار میده، مثلا کتابخونه Twisted برای کار با شبکه و کتابخونهی NumPy برای کار با اعداد و چیزهای دیگهای مثل پکیج SimPy برای شبیه سازی و خیلی کارای دیگه. برای مشاهده اکثر کتابخونههای سوم-شخص پایتونمیتونید به اینجا (http://pypi.python.org/pypi) مراجعه کنید
پایتون میتونه به عنوان یک زبان رویهای (http://en.wikipedia.org/wiki/Procedural_programming)، شیگرا (http://en.wikipedia.org/wiki/Object-oriented_programming) و تا حدودی تابعی (http://en.wikipedia.org/wiki/Functional_programming) عمل کنه، هرچند پایهی زبان پایتونشیگرا هستش ولی ما توی این سری آموزش ها به شما نحوه نوشتن برنامه با الگو های دیگه رو هم آموزش میدیم.
در این سری آموزش فرض شده که شما یک گیک هستید (به جای اینکه از قبل برنامه نویسی بلد بوده باشید) چون اگر یک گیک باشید حتما به راحتی میتونید دنبال گزاره مربوط بگردید و مشکلتون رو حل کنید :)
منتظر پست بعدی باشید
-
هرچند پایثان از لحاظ گفتاری برای عرب زبانان صحیح است اما پاریسی زبانان این نوع ث را نمی توانند تلفظ کنند!
اينجا قرار نيست ريشهي حروف رو بررسي کنیم ولي "حرف ث در زبان فارسی باستاني (فرس قديم) موجود بوده و با کيفيت مخصوصي تلفظ ميشده و به کار مي رفته." (کتاب دستور زبان فارسي پنج استاد)
پیروز باشيد
الان که قدیم نیست ما از اول دبستان این سه تا: س، ص، ث رو یجور تلفظ می کنیم. زبان معیار الان این شکلیه!
من توي پست اول هم گفتم شما آزاد هستی هر جوری که دوست داري تلفظ کني ولي برای نمونه شما اگه Three تیری تلفظ کنی يکي که انگلیسی زبان فکر میکنه شما ميگي tree همون قضيه هاست و هوسته :)
-
این مبحث شما رو برای نوشتن برنامههای پایتون آماده میکنه، اول باید مفسر پایتون رو روی سیستمتون نصب کنید که برای اینکار باید به اینجا (https://www.python.org/download) مراجعه کنید،. نصب مفسر پایتون روی سیستم عامل ویندوز نیازی به توضیح نداره و روی سیستم عامل های لینوکس اغلب به صورت پیش فرض نصب هستش ولی برای استفاده از آخرین نسخه مفسر باید اون رو کامپایل کنید، که اینجا من می گم چطوری هستش، به لینک بالا که مراجعه کنید، میبینید که چند راه برای نصب مفسر وجود داره، شما آخرین نسخه مفسر پایتون ۳ که موجوده رو به صورت فشرده دریافت میکنید و به صورت زیر عمل کنید
$ sudo cp filename.tar.gz or filename.zip /opt
$ cd /opt/
tarball: $ sudo tar –xvf filename.tar.gz
zip: $ sudo unzip filename.zip
بعد از اکسترکت فایل فشرده شده، میریم سراغ کامپایل و ایجاد سافت لینک :
$ cd Python.3.4.x
$ ./configure -–prefix=/opt/python34x
$ sudo make && sudo make install
$ cd /usr/bin
$ sudo ln –s /opt/python34x/bin/python3.4.x python34x
یک نکته، اونجاهایی که x گذاشتم آخرین ورژن مفسر پایتون که درحال حاضر در دسترسه رو نشون میده مثلا Python3.4.1 که الان آخرین ورژن مفسر پایتون ۳ هستش.
شما میتونید کدهای پایتون رو توی هر ادیتوری معمولی که از یونیکد پشتیبانی میکنه بنویسید، ولی فایلهای پایتون به صورت پیشفرض یونیکد UTF-8 رو در نظر میگیرن، چون یه یونیکد هستش که درحال حاضر از اکثر زبان ها پشتیبانی میکنه(مخصوصا فارسی).
فایلهای پایتون معمولا با فرمت .py هستند و اگرچه توی بعضی از سیستم عاملها (مثل لینوکس و مک) میتونند فرمتی نداشته باشند و برنامه های با رابطه کاربری هم با فرمت .pyw ذخیره میشن. توی این سری آموزش برای برنامه های کنسولی از فرمت .py و برای برنامههای دارای رابط کاربری از فرمت .pyw استفاده میشه.
تمام تمرینهای که در این سری آموزش وجود داره بدون شک روی پایتون ۳ بدون مشکل اجرا میشه.
برای اینکه از این فضای توُری بیرون بیایم، یک برنامه برای اینکه ببینیم همه چی روبراه و درست کار میکنه فایلی به اسم hello.py با یک ادیتور مغول ایجاد کنید(توی ویندوز همون Notepad کفایت میکنه) :
#!/usr/bin/env python3
print("Hello", "World")
خوب خط به خط برنامه رو تریس (trace) میکنیم، خط اول کامنت هستش، کامنتها یا توضیحات در زبان پایتون با علامت #(...,hash,crunch) شروع میشه(اینکه چرا بعد از علامت # علامت ! اومده رو الان توضیح میدم).
خط دوم - یک خط خالی یا فاصله است، پایتون به جز رشتههایی کوت شده (درون کوتیشن قرار گرفتهشده) بقیه فضایهای خالی و فاصله ها رو نادیده میگیره و البته با استفاده از این مزیت شما میتونید برنامه هاتون رو خوانا تر کنید(با استفاده از فاصله ولی نه زیاد). خط سوم میرسیم به یک تابع با دوتا آرگومان(argument) که هر دوی اونها از نوع strings; sequnce of characters)str) ( مجموعه ای از کارکترها / رشته ) هستند.
در زبان پایتون تمام دستورات یکی یکی اجرا میشن و اگه دستور اولی درست بود، مفسر به سراغ دستور دیگه میره، تفاوت اصلی بین زبانهای اسکریپتی مثل پایتون با زبانهای کامپایلری مثل سیپیپی، سی و ... توی اینجاست. زبانهای تفسیری اصولا زبانهای باهوش تری هستند و خیلی راحت میشه منظور رو بهشون رسوند ولی زبان های کامپایلری اینطور نیستن به سختی میشه یک کاری رو بهشون فهموند ولی وقتی بفهمند دیگه تمومه، سرعت یکی از مزایای زبانهای کامپایلری محسوب میشه ولی برعکس دیباگ کردن زبانهای کامپایلری خیلی سخت تر از زبان های اسکریپتی هستش. (بگذریم)
ما توی این آموزش فرض بر این میگیرم که کاربران ویندوز تمرین ها رو درون c:\py3eg و کاربرای سیستم عامل های دیگه درون HOME/py3eg$ نگهداری میکنند، فایل hello.py رو درون پوشه py3eg ذخیره کنید و ادیتور رو ببندید. حالا ما یه برنامه داریم که میتونیم اجراش کنیم، برنامه های پایتون توسط مفسر پایتون اجرا میشن، معمولا این مفسر توی کنسول هستش.
اگه توی ویندوز هستید از طریق CMD دستورات زیر رو اجرا کنید :
cd c:\py3eg
c:\python34x\python.exe hello.py
کاربرای سیستم عامل های یونیکسی هم از طریق ترمینال(با فرض اینکه پایتون در environment وجود داره) این دستورات رو اجرا کنند :
$ cd $HOME/py3eg
$ pythn34x hello.py
خروجی در هر دو سیستم عامل باید این باشه :
Hello World
نکته : تابع ()print هر چندتا که ما بخوایم میتونه آرگومان بگیره(رشته های جدا).
نوشتن همچین دستوراتی به زودی شما رو خسته میکنه برای همین توی هر دو سیستم عامل ویندوز و یونیکس(لینوکس و مک) یک راه بهتری برای اجرا برنامه ها وجود که به شکل زیر هستش (با فرض اینکه درون دایرکتوری py3eg هستید) توی ویندوز ما میتونیم به صورت زیر عمل کنیم :
c:\py3eg>hello.py
ویندوز با استفاده از رجیستری میاد نگاه میکنه که آیا ورژنی از پایتون درون environment path وجود داره یا نه. اگر خروجی در ویندوز به صورت زیر بود :
('Hello', 'World')
این به این معنی که در environment سیستم عامل شما python2 وجود داره نه python3 برای حل این مشکل دو روش وجود داره روش اول :
C:\py3eg\>path=c:\python34x;%path%
C:\py3eg\>python hello.py
روش دوم اینکه به این مسیر برید Control Panel\System and Security\System و در پنل سمت چپ گزینه Advanced system settings رو بزنید بعد یک پنجره برای شما باز میشه، آخرین دکمه که روش نوشته ...Environment Variables رو بزنید، باز یک پنجره براتون باز میشه، توی این پنجره پایین قسمتی که بالاش نوشته System Variables یک اسکرول هستش توی اون قسمت Path رو پیدا کنید و انتخابش کنید بعد از انتخاب دکمه Edit رو بزنید تا یک پنجره براتون باز بشه، جلوی نوشته Variable value یک فیلدی هست، به مقداری که داره دست نزنید آخرین مسیر هرچی که هست بعدش سمی کالن ";" بزارید و مسیر زیر رو وارد کنید :
c:\python34x
و بعد Ok و همینجوری تا آخرین پنجره Ok رو بزنید و تمام . ](*,)
و در سیستم عامل های یونیکسی برای اجرا برنامه به صورت زیر عمل کنید(با فرض این که در دایرکتوری py3eg هستید):
$ sudo chmod +x hello.py
$ ./hello.py
در سیستم های یونیکسی وقتی یک برنامه از طریق کنسول اجرا میشه، کنسول وقتی اولین خط برنامه رو میبینه اگه کارکترهای !# وجود داشته باشه، فرض میکنه که فایل باید از طریق مفسری که شما مسیرش رو تعریف کردید اجرا بشه و خط اول این فایل کنسول رو مجبور به این کار کرده. به این علامت !# (shebang,hashbang) یا crunchbang هم گفته میشه و همیشه باید در خط اول تعریف بشه. خط شیبنگ به دوصورت تعریف میشه، به این صورت:
#!/usr/bin/python3
و یا به این صورت:
#!/usr/bin/env python3
حالا شاید یکی بپرسه فرق چیه؟، فرقش توی اینه که اگه شما از شکل اول استفاده کنید برنامه رو مجبور میکنید که از مفسری که شما مسیرش رو بهش دادید استفاده کنه ولی در روش دوم برنامه میگرده و هر ورژنی از پایتون که در environment وجود داشته باشه رو استفاده میکنه (شاید مفسر تو مسیر /usr/bin نباشه شاید تو مسیر /usr/local/bin باشه و یا زیرشاخه HOME$ باشه).
نکته: روش اول برای استفاده در سرور ضروریه.
در تمام تمرین ها در این سری آموزش از فرم دوم استفاده میشه.
توی این آموزش ما فرض بر این میگیریم که پایتون در سیستم عامل های یونیکسی با نام python3 (به صورت سافت لینک ویا...) وجود داره. اگه اینطوری نیست شما میتونید مسیر موردنظرتون رو به در خط اول به برای شیبنگ تعریف کنید.(یا یک سافت لینک در مسیر /usr/bin با این نام بسازید)
ویرایشگرهای قدرتمند زیادی برای استفاده وجود داره، مثلا vim, emacs , ... با قابلیت ویرایش فایل های پایتون. این پشتیبانی از پایتون مزیت های مثل syntax highlighting , گذاشتن خودکار فاسله ها به صورت درست و ... رو به همراه داره.
ما یک انتخاب سومی هم داریم که اون IDLE خود پایتون هستش که یک محیط به حساب میاد، این محیط به صورت پیش فرض در ویندوز و مک وقتی پایتون رو نصب میکنید نصب میشه ولی برای سیستم های لینوکس وقتی از طریق فایل فشرده پایتون رو نصب میکنید وجود داره ولی اگه از طریق پیکج منیجر نصب کرده باشید به صورت یک پیکج جدا وجود داره.
باتوجه به مزایایی مثل دیباگ کردن، صدا زدن آبجکت رفرنس ها (بعدا میگم چیه) و خیلی چیزا دیگه که این محیط داره ما از این محیط استفاده میکنیم.
دوستان تا اینجا برای این پست کافیت میکنه، منتظر پست بعدی باشید
-
دو سال قبل کتابی به صورت رایگان منتشر شد به نام "از این پس پایتون" که آموزش وایتون رو به کیفیت خوبی ارائه میده و 334 صفحه هست، اگر کسی میخواد پایتون یاد بگیره اون کتابو بخونه.
-
دو سال قبل کتابی به صورت رایگان منتشر شد به نام "از این پس پایتون" که آموزش وایتون رو به کیفیت خوبی ارائه میده و 334 صفحه هست، اگر کسی میخواد پایتون یاد بگیره اون کتابو بخونه.
اگه شما یک نگاه به فهرست منابع اون کتاب بندازید متوجه خواهید شد که این کتاب پایتون 2 رو آموزش میده و منابعش تقریبا منقرض شده است :
Downey Allen B., Elkner Jeffrey, Meyers Chris; Wellesley, Massachusetts; April
2002 ; How to Think Like a Computer Scientist: Learning with Python
Pilgrim,Mark ; January 2002 ; Dive Into Python
v.Rossum Guido, Drake Fred L. ; December 2001 ; Python Tutorial
خوش باشید
-
من برای منظم بودن جستارها، جستار کتاب های زیادی رو اینجا بهکار میگیرم؛ یکیش هم "پایتونِ مهربان" هست که با ۸ ویژگی کلیدی پایتون خیلی تند و تیز آشنا میشیم و توی پست ها بعدی هر کدوم رو به صورت مفصل توضیح میدیم.
بخش ۱:گونه دادهای
توی تمام زبانهای برنامه نویسی یک چیز پایهای وجود داره، اونم اینه که به بهترین روش بتونه با آیتمهای دادهای کار کنه و اونها رو نمایش بده. پایتون گونههای دادهای زیادی رو برای بهکارگیری فراهم کرده، ولی ما فعلن دوتا از اونا برای ما اهمیت داره. پایتون برای نمایش اعداد صحیح (integer / whole numbers) منفی و مثبت از گونه int استفاده میکنه و برای نمایش دادن رشتهها (مجموعهای از کارکترها) گونه str استفاده میکنه، اینجا چند مثال از اعداد صحیح و رشتههای لفظی (https://en.wikipedia.org/wiki/Literal_(computer_programming)) آورده شده:
-973
210624583337114373395836055367340864637790190801098222508621955072
0
"Infinitely Demanding"
'Simon Critchley'
'پایتون αβγ ÷©'
''
عدد دوم ۲۲۱۷ هستش، درضمن اعداد صحیح در پایتون تنها به حافظه دستگاه محدود میشن، نه به تعدادِ ثابتی از بایتها، رشتهها میتونن هم با "(double quote) و هم با '(single quote) تعریف بشن (داخل هر دو علامت قرار بگیرن) و تا زمانی که پایتون از یونیکد UTF-8 استفاده کنه، رشتهها فقط به کارکترهای ASCII محدود نمیشن(مثل رشتهی یکی مونده به آخر) و برای تعریف یک رشته خالی بین دو علامت "" و '' نباید چیزی قرار بگیره، مثل رشته آخر.
پایتون برای دسترسی به یک آیتم در یک گونه دادهای ترتیبی مثل رشتهها از [](square brackts / U-turns) استفاده میکنه، برای مثال اگه ما داخل پایتون شل (خود مفسر داخل شل یا IDLE) باشیم، میتونیم با وارد کردن نوشته زیر :
>>> "GNU/Linux"[5]
'i'
>>> "giraffe"[0]
'g'
این خروجی رو دریافت کنیم، با استفاده از [] میتونیم به آیتمهای تمام گونههای دادهای ترتیبی مثل رشتهها، لیستها دسترسی داشته باشیم. این سازگاری در گرامر پایتونِ که اونو به یکی از بهترین زبانها تبدیل کرده. توجه داشته باشید که اندیس در زبان پایتون از صفر شروع میشه.
در پایتون هر دو گونهی str , int تغییر ناپذیر (immutable) هستند و این به معنی که وقتی تعریف میشن، دیگه نمیشه تغییرشون داد(یک بار دیگه درجای دیگه بهشون مقدار داد) شاید این به نظرتون محدودیت به حساب بیاد و با امکاناتی که پایتون فراهم کرده هیچ مشکلی در گرامر و چیزهای دیگه ایجاد نمیکنه. برای این اینارو گفتم که شما شاید پیش خودتون فکر کنید وقتی میشه با [] به آیتمی در یک گونه دادهای ترتیبی (فقط ترتیبی) دسترسی داشت، پس صدرصد میشه آیتمی به اون اضافه و یا حذف کرد ولی این امکان وجود نداره چون هر دو گونه str, int از نوع تغییرناپذیر هستند (پس نمیشه چیزی ازشون کم و یا بهشون اضافه کرد) و به این توجه داشته باشید که در پایتون یک کارکتر به معنای یک رشته با طول ۱ هستش.
برای تبدیل گونههای دادهای به یکدیگر باید از این قانون پیروی کنید (datatype(item، برای مثال:
>>> int(" 45 ")
45
>>> str(912)
'912'
تابع تبدیلی ()int فاصله و فضای خالی رو نادیده میگیره، بنابراین (" 45 ")int هم بدرستی کار میکنه. تابع تبدیل ()str میتونه برای تبدیل اکثر گونههای دادهای بهکار گرفته بشه. ما میتونیم گونههای دادهای خودمون رو بسازیم و قابلیت اینکه از تابع های تبدیلی مثل ()int(), str و دیگر تابعها رو پشتبانی کنند؛ براشون تعریف کنیم.(در پست های بعدی میبینین) اگه تبدیل دادهای شکست بخوره یک استثناء یا واخواهی پیش میاد که روش اداره کردنشون رو بعدا آموزش خواهیم داد.
بخش ۲:شیء مرجعی(اشاره کننده به مرجع)
وقتی ما تعدادی گونه دادهای داریم، چیز بعدی که نیاز داریم چندتا متغیرِ که اینارو درونشون ذخیره کنیم. پایتون به معنای واقعی چیزی به اسم متغیر نداره، ولی بجاش یک چیزی به اسم شیء مرجعی (object refrence) داره. وقتی به گونههای تغییرناپذیر میرسیم فرقی بین یک متغیر و یک آبجکت رفرنس وجود نداره، ولی در گونههای تغییرپذیر کمی فرق میکنه، البته توی تمرین زیاد مهم نیست. ما توی این سری آموزش اونجایی که بشه از این کلمات به جای هم استفاده کرد، استفاده میکنیم(بعضی جاها متغیرِ، بعضی جاها آبجکت رفرنس).
خوب بریم سراغ چندتا تمرین کوچیک و دربارشون صحبت کنیم:
x = "blue"
y = "green"
z = x
سینتکسش به این صورته objectRefrence = value. هیچ نیازی به از پیش تعریف کردن یا تعریف گونهی مقداری که قرار در آبجکترفرنس قرار بگیره نیست. وقتی پایتون خط اول رو اجرا میکنه، یک شیء str با متن "blue" میسازه، و بعد یک آبجکت رفرنس به نام x میسازه که به شیء str اشاره میکنه. خط دوم هم به همین شکل. خط سوم یک آبجکت رفرنس به نام z میسازه که به همون آبجکت رفرنس x اشاره میکنه(که اینجا x به شیء str با مقدار "blue" اشاره میکنه).
عملگر = در واقع یک آبجکت رفرنس رو به یک شیء در حافظه وصل میکنه، اگر آبجکت رفرنسی با این نام وجود داشته باشه، دوباره به سر جای اولش برمیگرده به شیءای که درسمت راست عملگر قرار داره وصل میشه؛ اگر این آبجکت رفرنس وجود نداشته باشه توسط عملگر = ساخته میشه.
بریم تمرین بالا رو ادامه بدیم و چندتا دوبارهپیوندی(rebinding) انجام بدیم(مثل z = x که یک آبجکت رفرنس به آبجکت رفرنس دیگه اشاره میکنه)
print(x, y, z) # prints: blue green blue
z = y
print(x, y, z) # prints: blue green green
x = z
print(x, y, z) # prints: green green green
بعد از خط چهارم تمام آبجکت رفرنس ها به یک شیء اشاره میکنن و آبجکت رفرنسی وجود نداره که به شیء str با مقدار "blue" اشاره کنه، برای همین زباله جمعکن پایتون آزاده که زباله هارو جمع کنه( شیء str با مقدار "blue" رو حذف کنه) برای درک بهتر به تصویر زیر خوب نگاه کنید.
(http://cld.persiangig.com/preview/vumef5UpTw/objectRefrence_to_object.jpg)
Figure 1.1 Object references and objects
برای نامی که برای آبجکت رفرنسها انتخاب میشه(معرف / identifier) یکسری قوانینی وجود داره. از نامهای کلیدی پایتون نمیشه استفاده کرد، باید با یک حرف، ـ(underscore / زیرخط) یا یک رقم شروع بشه. محدودیتی برای طول اسم وجود نداره. تمام عداد و حروف ی که به صورت یونیکد UTF-8 هستند قابل استفاده اند (مثل عدد ۱، ۲ اسمهایی مثل تراکنش، پاسخ، نتیجه و ...) و اسمها فقط به اعداد و حروف کارکتری ASCII محدود نمیشن (“a”,“b”,…,“z”,“A”,“B”,…,“Z”,“0”,“1”,…, “9”). توی پایتون معرفها به حروف کوچک و بزرگ حساس هستند، برای مثال معرفهای LIMIT, Limit و limit هر سه باهم متفاوتاند.
پایتون از گونهدهی پویا(dynamic typing) استفاده میکنه، یعنی اینکه یک آبجکت رفرنس میتونه هر زمانی تعریف بشه و به شیء موردنظرش اشاره کننه، مثل جاوااسکریپت و ... برخلاف اینها زبانهایی مثل Java و ++C که از گونهدهی سخت استفاده میکنند و باید قبل از اینکه یک متغیر تعریف بشه گونهاش مشخص بشه و گرنه اگر مقداری به متغیر داده بشه با خطا مواجه میشه، اونم خطای گرامری نه خطای زمان اجرا(runtime)، پایتون هم اجازه نمیده عملیاتی که مربوط به یک گونهی دادهای نیست صورت بگیره، ولی زبان بهش گونهدهی سخت گفته نمیشه چون ممکنه یک عملیات درست تغییر کنه(درواقع پایتون هم یک زبان گونهدهی پویا و هم یک زبان گونهدهی سخت حساب میشه این موضوع کمی پیچیده است و ما نمیخوایم واردش بشیم، برای اطلاعات بیشتر به اینجا (https://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language) مراجعه کنید). اگه متوجه نشدید به شکل زیر نگاه کنید:
(http://cld.persiangig.com/preview/a9eGpQGMQu/dynamic_typing.png)
Figure 1.2 Dynamic Typing
(در یک زمان یک آبجکت رفرنس با نام x تعریف میشه و به یک شیء اشاره میکنه و در همون زمان گونهاش بررسی میشه)
برای اینکه بیشتر متوجه بشید به مثال زیر توجه کنید که یک آبجکت رفرنس به یک شیء دوبارهپیوند داده میشه:
route = 866
print(route, type(route)) # prints: 866 <class 'int'>
route = "North"
print(route, type(route)) # prints: North <class 'str'>
اینجا ما یک آبجکت رفرنس با نام route ایجاد کردیم و وادارش کردیم به مقدار 886 از گونهی int اشاره کنه. الان ما میتونیم از عملگر / استفاده کنیم، چون تقسیم برای اعداد سحیح عمل درستی به حساب میاد. سپس ما دوباره از آبجکت رفرنس route استفاده میکنیم و وادرش میکنیم به مقدار "North" از گونهی str اشاره کنه، پس الان شیء int میره تو سطل آشعال تا زباله جمعکن پایتون جمعآوریش کنه چون دیگه هیچ آبجکت رفرنسی بهش اشاره نمیکنه. پس الان اگه ما از عملگر / (تقسیم) استفاده کنیم با خطای TypeError مواجه میشیم چونکه تقسیم عملگری درستی برای گونهی str به حساب نمیاد(رشته رو نمیشه تقسیم کرد).
تابع ()type گونهی دادهای یک آیتم دادهای رو برمیگردونه(بهش کِلَس هم میگن)-این تابع برای تست و دیباگ کردن برنامه خیلی بدرد میخوره ولی توی سورس کد(برنامه اصلی) ازش استفاده چندانی نمیشه.
اگه شما از IDLE یا پایتون شل استفاده میکنید، نیازی نیست که برای نمایش دادن مقدار آبجکت رفرنس ها از تابع ()print استفاده کنید، اسم آبجکت رفرنسها رو که توی شل یا IDLE بنویسد کافیه، مقدار رو برمیگردونه. برای مثال:
>>> x = "blue"
>>> y = "green"
>>> z = x
>>> x
'blue'
>>> x, y, z
('blue', 'green', 'blue')
این مناسب تر از اینکه از تابع ()print استفاده کنید ولی توجه کنید که این مزیت فقط در ّIDLE و پایتون شل وجود داره و اگر بخواید با استفاده IDE یا ویرایشگر متن کدهای پایتونتون رو بنویسد حتما باید از تابع ()print استفاده کنید.
اگه توجه کرده باشید توی آخرین خروجی مقدار ها با استفاده از کاما جدا شدند، این نشون دهندهی گونهی دادهای توپل / تاپل(چندتایی) هستش، توپل مجموعهای مرتب شده از آبجکتهای تغییرناپذیر هستش. بعدا درباره توپل که یک گونه دادهای اجتماعی هست توضیح داده میشه.
خوب دوستان امیدوارم از این پست نهایت استفاده رو بکنید چون واقعا حدود ۵ ساعت وقت من رو گرفت، چون زبان فارسی در بیان کلمات فنی دچار ضعف هستش خیلی سعی شده که نزدیکترین کلمه که هست استفاده بشه .
لطفا هرگونه خطا گرامری و یا دستوری در نوشته و کدها رو از طریق پ.خ به بنده اطلاع بدید.