آموزش پایتون به زبان ساده قسمت هشتم

آموزش کار با زبان برنامه‌نویسی پایتون (بخش هشتم)

آموزش پایتون به زبان ساده

سکون و ایستایی در دنیای نرم‌افزار مترادف مرگ است. همه نرم‌افزارها برای ادامه حیات‌ خود محتاج به روزآوری و افزوده شدن قابلیت‌ها و ویژگی‌های جدید هستند. در این میان با گسترش کاربرد و نفوذ کامپیوترها در جنبه‌های مختلف زندگی ما، زبان‌های برنامه‌نویسی بیش از سایر نرم‌افزارها به این پویایی و تحول نیاز دارند. بر همین اساس، زبان پایتون نیز به‌صورت مداوم در حال بازبینی و بهینه‌سازی است. در این مورد خاص و با توجه به حجم عظیم تغییرات ایجاد شده در نسخه X.3، بنیاد نرم‌افزار پایتون (Python Software Foundation) تصمیم گرفته، ارتقا به سری جدید را به تدریج انجام دهد‌، یعنی روند توسعه سری جدید در کنار سری جاری و به‌صورت همزمان انجام می‌پذیرد تا زمانی که بنیاد به این نتیجه برسد، بیشتر کاربران آمادگی انتقال به سری جدید را دارند. در این قسمت تصمیم گرفتیم، به معرفی مختصر خصوصیات و تفاوت‌های نسل جدید پایتون با نسل قبل بپردازیم.

نسل سوم

همان‌گونه که پیش‌تر اشاره شد، در حال‌حاضر توسعه پایتون در دو مسیر موازی در حال انجام است. گروه نخست توسعه‌دهندگان همچنان به کار روی سری دوم پایتون (۲.x) مشغول هستند که به‌دلیل قدمت و سابقه بیشتر، پرطرفدارتر است. در حال حاضر بیشتر فریم‌ورک‌ها و کتابخانه‌های رایج و پراستفاده برای این سری توسعه داده شده و پیاده‌سازی می‌شوند. تمام مثال‌ها و برنامه‌هایی که تا‌کنون معرفی کرده‌ایم نیز از همین سری استفاده می‌کنند.
 این نسل از زبان پایتون در اکتبر سال ۲۰۰۰ معرفی شد و اکنون به نسخه ۱/۷/۲رسیده است. گروه دوم توسعه‌دهندگان به کار روی نسل جدید این زبان، یعنی پایتون ۳.x می‌پردازند که تا‌کنون نسخه ۲/۳ آن نیز منتشر شده است. در این سری وان روسوم (Guido van Rossum) خالق پایتون، تصمیم گرفته به بازنگری اساسی در تمام جنبه‌های این زبان برنامه نویسی و حذف Backward Compatibility (پشتیبانی از اجرای کدهای نوشته شده با نسل دوم این زبان) بپردازد.

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

دستور PRINT

یکی از مهم‌ترین و پرکاربردترین بخش‌های پایتون که در این نسخه دستخوش تغییرات اساسی شده، دستور print است. در نسخه‌های ۲.x این زبان به راحتی می‌توانستیم آیتم مورد نظر را به فرم زیر چاپ کنیم:

print “This is a test”

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

print (“This is a test”)

هرچند این تغییر به ظاهر ساده است، اما در ادامه خواهیم دید که تغییرات دستور print به همین موارد خلاصه نخواهد شد.

قالب‌بندی و جای‌گذاری متغیرها

در نسخه قبلی پایتون ما از کدهایی برای قالب‌بندی و جای‌گذاری متغیرها در یک رشته استفاده می‌کردیم (همانند شکل۱). اگرچه این عبارت در پایتون ۲/۳ نیز به درستی کار خواهد کرد، اما این وضعیت در حال تغییر است، زیرا توابع قالب‌بندی %s و %d در نسخه‌های آینده حذف خواهند شد و سیستم نگارشی {x} جایگزین آن خواهد (شکل‌۲). در این روش عبارت‌های معرفی شده به عنوان آرگومان‌های متد format، به ترتیب جایگزین {x}ها خواهند شد. همان‌طور که مشاهده می‌کنید، خوانایی این روش جدید بسیار بیشتر از حالت قبلی ارجاع به متغیرها و قالب‌بندی آن‌ها است.

اعداد

در سری ۲.x پایتون عبارت ۰.۲/۵ حاصلی برابر با۵.۲ داشت. اما اگر از عبارتی مانند ۲/۵ استفاده می‌کردید، به‌واسطه تبدیل نتیجه به فرمت عدد صحیح (به‌واسطه عدد صحیح بودن هر دو عملوند عبارت ۲/۵) حاصلی برابر ۲ دریافت می‌کردید. در سری ۳.x پایتون استفاده از هر دو فرم قبلی نتیجه‌ای برابر با ۵.۲ ایجاد خواهد کرد. و در صورتی که نیاز داشته باشید تقسیم را به‌صورت صحیح و بدون اجزای اعشاری انجام دهید، باید از فرمت ۵//۲ استفاده کنید.

دستور INPUT 

در سری ۲.x  پایتون، دستور input  تنها ورودی‌های عددی را می‌پذیرفت و در صورت ورود رشته‌ها همانند شکل ۳ با پیغام خطا روبه‌رو می‌شدیم. برای دریافت رشته‌ها از کاربر مجبور بودیم از دستور raw_input استفاده کنیم. اما در سری ۳.x دستور input با تمام ورودی‌ها همانند رشته رفتار می‌کند و در صورتی که به دریافت اعداد نیاز داشته باشید، باید ورودی‌های دستور input را به صورت دستی به عدد تبدیل کنید.

نامساوی و شرطی‌ها

در سری ۲.x پایتون برای کنترل نامساوی‌بودن عبارت‌ها از عملگر <> استفاده می‌شد، اما این شیوه در سری ۳.x دیگر مجاز نیست و به جای آن باید از عملگر != استفاده کرد.  نکته دیگر این‌که در سری ۲.x در صورت مقایسه دو عملوند از نوع مختلف (مثلاً مقایسه یک رشته با یک عدد صحیح) همانند شکل ۴ نتیجه‌ای برابر با false یا نادرست بازگردانده می‌شد. به عبارت دیگر، خطایی رخ نمی‌داد. اما در سری ۳.x باید حتماً، از یکسان بودن (به عبارت کلی‌تر، قابل مقایسه بودن) عملگرها اطمینان حاصل کرد. در غیر این صورت، همانند شکل ۵ با خطای Type Error مواجه خواهیم شد.

سایر تغییرات

انواع داده بنیادین در پایتون نیز دستخوش تغییر شده‌اند. دو نوع داده int و long در قالب یک نوع داده، یعنی int ادغام شده‌اند و متدهای مربوط به دیکشنری‌ها نظیر ()dict.keys به جای بازگرداندن یک لیست، نوع جدیدی به نام view را باز می‌گردانند. تابعی نظیر ()range هم به جای یک لیست یک شمارنده یا Iterator را باز می‌گرداند. 
همچنین تغییرات فراوانی نیز در کتابخانه‌های استاندارد پایتون ایجاد شده است. به عنوان مثال، می‌توان به حذف توابع مربوط به گوفر (gopherlib) و جایگزین شدن md5 با hashlib اشاره کرد. البته، همان‌طور که در ابتدا نیز اشاره شد، تغییرات ایجاد شده بسیار زیاد بوده و توضیح  کامل همه آن‌ها در این مقاله نمی‌گنجد.

تبدیل برنامه‌ها به سری جدید

سری ۳.x  پایتون با ابزاری برای تبدیل کدهای سری‌های قبلی به سری جدید همراه شده است. اگرچه این ابزار در همه موارد به درستی عمل نمی‌کند، اما در بسیاری از موارد شما را به هدف بسیار نزدیک خواهد کرد. این ابزار نام معنی‌دار ۲to3 را یدک می‌کشد. در لینوکس برای استفاده از این ابزار از طریق ترمینال دستور زیر را وارد می‌کنیم:

۲to3 [-w] <input_file.py<

توجه داشته باشید که این دستور به شرطی عمل خواهد کرد که سری ۳.x  پایتون روی لینوکس نصب شده باشد. در اوبونتو برای نصب این سری جدید  از دستور زیر استفاده کنید:

sudo apt-get install python3

این ابزار در ماشین‌های ویندوزی با نام ۲to3.py در پوشه c:\Python3x\Tools\Scripts قرار دارد و برای استفاده از آن باید از خط فرمان و در پوشه گفته شده دستور زیر را صادر کرد:

<python.exe   ۲to3.py  [-w]  <input_file.py

این برنامه در حالت عادی تنها تغییرات لازم را برای تبدیل کد، روی صفحه نمایش چاپ خواهد کرد و فایل را تغییر نخواهد داد. استفاده از سوییچ اختیاری –w باعث می‌شود، تغییرات مورد نیاز به فایل اصلی اعمال شود. در صورت استفاده از این سوییچ یک نسخه پشتیبان از فایل تهیه شده و تغییرات موردنیاز به طور مستقیم به فایل اعمال می‌شود. 

آیا باید به سری ۳.x مهاجرت کنیم؟

تغییرات سینتکس در همه نسخه‌های جدید زبان‌های برنامه‌نویسی به چشم می‌خورد. میان‌برهایی نظیر += ممکن است به سادگی کار ما را در هنگام کدنویسی ساده‌تر کنند. اما همین تغییرات ساده سینتکس جنبه‌های منفی نیز در خود دارند. درباره زبان پایتون نیز به دلیل همین تغییرات (گاهی ساده) در سینتکس، بسیاری از ماجول‌ها و کدهایی که قبلاً استفاده می‌کردیم، در برنامه‌هایی که با سری ۳.x پایتون نوشته می‌شوند، قابل استفاده نیستند. به عنوان نمونه می‌توان به کتابخانه‌های ElementTree اشاره کرد که در بخش مربوط به xml از آن استفاده کردیم. اما با تمام این مشکلات نباید از مهاجرت به سری ۳.x پایتون نا امید شد.

خوشبختانه پایتون سری ۲.x (حداقل از نسخه ۶/۲ به بعد) در عین سازگاری با نسخه‌های قبلی، از تمام سینتکس‌های مورد نیاز برای نوشتن کد به سبک سری ۳.x پشتیبانی می‌کند (فهرست ۶). پیشنهاد می‌کنیم که از همین حالا نوشتن کد به سبک سری   ۳.x را آغاز کرده و اگر می‌توانید تنها به کتابخانه استاندارد پایتون بسنده کنید و به ماجول‌های دیگر رجوع نکنید، حتماً به  ۳.x  پایتون مهاجرت کنید. 

به کمک ابزار انتقالی که پیش‌تر از آن صحبت کردیم، تقریباً می‌توانید به سادگی تمام مجموعه کدهایی را که تا‌کنون نوشته‌اید، به سری ۳.x ارتقا دهید. اما حتی اگر نیازمند کتابخانه‌هایی هستید که هنوز به سری ۳.x منتقل نشده‌اند، همواره گوشه چشمی به این سری جدید داشته باشید. زیرا دیر یا زود کدهای موردنظر شما نیز به سری ۳.x ترجمه خواهند شد. 

مطالعه بیشتر

برای آشنایی بیشتر با تغییرات و نحوه مهاجرت به این سری جدید می‌توانید به منابع زیر مراجعه کنید:

– http://wiki.python.org/moin/Python2orPython3
– http://docs.python.org/release/3.1.2/whatsnew/3.0.html
– http://docs.python.org/library/2to3.html 
– http://diveintopython3.org

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

اشتراك گذاری نوشته

پاسخ دهید

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