انتخاب اول
مجموعه
عظیم زبانهای برنامهنویسی موجود را براساس ویژگیها و قابلیتهایشان به
دستههای مختلفی طبقهبندی کردهاند. دستهبندیهایی نظیر شيءگرا در
برابر روالگرا یا اپنسورس در برابر منبع بسته، مستقل از پلتفرم در برابر
وابسته به پلتفرم، ترجمهای در برابر تفسیری و . . . هر یک از این دستهها
نشانگر ویژگیها و امکاناتی هستند که ممکن است از یک دیدگاه خاص بسیار مفید
و ارزنده محسوب شده و از دیدگاهی دیگر بهعنوان محدودیت شناختهشوند.
همین امر انتخاب یک زبان را برای شروع یادگیری به انتخابی دشوار تبديل
ميكند. دراينميان، زبانهای مشهور یا زبانهای پرکاربرد لزوماً
انتخابهای مناسبی نخواهندبود. بهعنوانمثال، زبانهایی نظیر C یا ++C به
برنامهنویس این امکان را میدهند که برنامههای خود را با جزئیات بسیار
بالا نوشته و با سرعت فوق العادهای اجرا كنند. اما این سرعت بالا و کنترل
شدید برنامهنویس بر تمام جزئیات به قیمت صرف زمان بیشتر برای کدنویسی و
رفع اشکال کد تمام خواهد شد. نکته جالبتوجه اينكه در بسیاری از موارد
سرعت اجرای برنامهها چندان مهم نیست.
درحالحاضر
نیز با ارزان شدن مداوم قدرت پردازش سیستمها، بسیاری از برنامهنویسان
معتقدند، هدر رفتن درصدی از نیروی پردازش پردازنده در اثر استفاده از
زبانهای سطح بالا و درعوض فراهمشدن زمان بیشتر برای تمرکز برنامهنویس
بر فعالیت اصلیاش یعنی کدنویسی، معاملهای مقرونبهصرفه است. زبانی که
برای شروع یادگیری انتخاب میشود در ابتدا باید ساده باشد، به برنامهنویس
تفکر سیستمی و منطقی را بیاموزد، اصول کدنویسی درست را به کاربر آموزش دهد،
قادر به پاسخگویی به غالب نیازهای کاربر باشد و درنهايت اینکه
بهتراست به سیستمعامل یا ابزار خاص و پیچیدهای وابسته نباشد.
برهمیناساس،
بسیاری پایتون را بهترین زبان برای شروع یادگیری برنامهنویسی میدانند.
پایتون زبانی سطح بالا، داینامیک، اسکریپتی، تفسیری، شيءگرا، آزاد،
اپنسورس و مستقل از پلتفرم است که در سال 1991 توسط گوئيدو وان روسوم
ابداع شد. باید توجه داشت که معرفی پایتون بهعنوان زبان مناسب مبتدیان
بهمعنای کم بودن قابلیتهای آن نیست. هماکنون پایتون بهعنوان یکی از
قدرتمندترین ابزارهای برنامهنویسی سیستمی، برنامهنویسی وب و... مورد
استفاده قرار میگیرد.
چرا پایتون؟
اگرچه
ممكن است بسیاری از برنامهنویسان قديمي که با زبانهایی نظیر جاوا و C
سروکار داشتهاند، برنامهنویسی با پایتون را چندان جدی نگیرند و حتی آن را
کودکانه بدانند، اما این امر از قابلیتهای این زبان نخواهد
کاست. درعوض، تعداد زیادی از برنامهنویسان (کسانی نظیر برنامهنویسان
گوگل) پایتون را بهدلیل سادگی، خوانایی و امکانات فراوان به هر زبان دیگری
ترجیح میدهند. طرفداران پایتون که غالباً Pythonistas نامیده میشوند،
معتقدند، این زبان بهقدری کامل و کار با آن بهقدری لذتبخش است که برای
تمام نیازهای برنامهنویسی میتوان به آن مراجعهکرد. آنها برای این ادعا
دلایل فنی هم ارائه میکنند که برخی از آنها بهشرح زیر است:
سادگی
پایتون
زبانی بسیار ساده و مینیمالیستی است. خواندن یک برنامه خوب پایتون همانند
خواندن یک متن انگلیسی است. این طبیعت شبهکد (Pseudo-Code) یکی از
بزرگترین نقاط قوت پایتون است و به شما این امکان را میدهد که بهجای
تمرکز روی زبان بر روش حل مسئله تمرکز کنید.
سهولت یادگیری
سادگی
این زبان باعث میشود، یادگیری آن از غالب زبانهای موجود سادهتر باشد.
برخی عقیده دارند ، یک روز تعطیلي آخر هفته برای یادگیری دستور و قواعد
زبان پایتون و بخشی از کتابخانه استاندارد آن کافی است.
آزاد و اپنسورس بودن (FLOSS)
یکی
از بارزترین نمونههایFLOSS (سرنام Free/Libre and Open Source Software)
پايتون است. بهعبارتسادهتر، شما میتوانید نسخههایی از این نرمافزار
را آزادانه توزیع کنید، کدهای منبع آن را بخوانید، تغییر دهید و از آن در
برنامههايتان استفاده کنید. اساس FLOSS برجامعهای بنا شده که افراد آن
دانش خود را با یکدیگر بهاشتراک میگذارند. یکی از دلایل برتری پایتون نیز
همین است که بهصورت مداوم توسط جامعهای که تنها خواستهاش بهتر شدن این
زبان است، بررسی شده و بهبود داده میشود.
سطح بالا بودن (High-Level)
هنگام کدنویسی در پایتون لازم نیست نگران جزئیات سطح پایین باشید. مدیریت حافظه، جمعآوری پسماندها (Garbage Collection) و... همه توسط خود زبان انجام خواهدشد.
قابلیت حمل (Portable)
بهواسطه
طبیعت اپنسورس پایتون، این زبان به بسیاری از پلتفرمها انتقال داده
شدهاست. تمام برنامههای شما میتوانند بدون هیچ تغییری روی تمامی این
پلتفرمها اجرا شوند. البته بهشرطی که با هوشیاری از قابلیتهای خاص
وابسته به پلتفرم پرهیزکنید. برنامههای پایتون شما بهسادگی روی لینوکس،
ویندوز، FreeBSD، مک، سولاریس، آمیگا، پلیاستیشن، Pocket PC و... قابل
اجرا هستند.
تفسیری بودن (Interpreted)
برنامهای
که با یکی از زبانهای ترجمهای نظیر C یا #C نوشته میشود، توسط کامپایلر
و تنظیم تعداد زیادی گزینه و Flag به زبان قابل فهم ماشین تبدیلمیشود.
وقتی برنامه را اجرا میکنید، Loader/Linker برنامه، آن را به حافظه کپی
کرده و اجرا میکند.
برخلاف
این زبانها پایتون به مترجم نيازي ندارد و برنامه شما بهطورمستقيم از
روی کد اجرا میشود. درواقع در پشت پرده، مفسر پایتون برنامه شما را
بهحالتی واسطهای بهنام ByteCode تبدیل کرده و سپس اجرامیكند.
تمام
اینها باعث میشود که استفاده از پایتون سادهتر شود. زیرا لازم نیست
نگران چرخه کدنویسی، کامپایل، کنترل، اصلاح کد، کامپایل دوباره یا نگران
گزینههای کامپایلر، در دسترس بودن و لینک شدن کتابخانههای موردنظر و...
باشید. این سیستم قابلیت حمل برنامه را نیز افزایش میدهد. زیرا کافی است
شما کد را به سیستم دیگری کپی کنید و برنامه بدون نیاز به کامپایل دوباره
بهسادگی اجرا میشود.
شيء گرایی (Object Oriented)
پایتون
از هر دو شیوه برنامهنویسی شيءگرا و روالگرا بهخوبی پشتیبانی میکند.
در زبانهای روالگرا، برنامه برمبنای تعدادی روال یا تابع ساخته میشود
که درواقع چیزی جزء قطعات کد با قابلیت استفاده دوباره نیستند. در
زبانهای شيءگرا برنامه برپایه اشیايی ساخته میشود که اطلاعات و عملکرد
را یکجا نگهداری میکنند. پایتون در مقایسه با زبانهایی نظیر #C یا
جاوا روش بسیار سادهتری برای برنامهنویسی OOP دارد.
قابلیت توسعه (Extensible)
اگر
در برنامه شما قطعه کدی حساس وجود دارد که لازم است با سرعت بالایی اجرا
شود یا میخواهید الگوریتم بهکاررفته در آن را مخفی کنید، میتوانید آن
قسمت را به زبانC یا #C بنویسید و آن را از داخل برنامه پایتون اجرا کنید.
قابلیت جاسازی (Embeddable)
میتوان
پایتون را بهصورت توکار (Embedded) در برنامههای C یا #C یا زبانهای
دیگر بهکار برد و از اين طريق به استفادهكنندگان برنامه قابلیت
اسکریپتنویسی را هدیه کرد.
کتابخــانــه استــانــــدارد غنــــــی (Extensive Library)
کتابخانه
استاندارد پایتون بسیار گسترده و غنی است. این کتابخانه که بههمراه نصب
استاندارد پایتون در دسترس خواهد بود، میتواند گستره عظیمی از امور را
نظیر Regular Expression، Document Generation، UnitTesting،Threading،Database،Web Browsing،FTP، XML، HTML ،Cryptography ،GUI وEmail پوشش دهد.
در کنار کتابخانه استاندارد پایتون، تعداد زیادی کتابخانه خوشساخت دیگر نظیر wxPython (برای ساخت رابط گرافیکی)، Twisted (فریم ورک توسعه اینترنت)، PIL
یا Python Imaging Library (برای ویرایش تصاویر) نیز در دسترس شما است.اما
درنهایت شاید مهمترین دلیل طرفداران پایتون هیچ یک از موارد فوق نباشد.
آنچه آنها را شیفته این زبان میکند لذتی است که از کار با چنین زبان ساده
و قدرتمندی نصیب برنامهنویس خواهد شد.
چه کسانی از پایتون استفاده میکنند؟
بهدلیل
ماهیت اپنسورس و رایگانبودن، آمار دقیقی از استفادهکنندگان این زبان در
دسترس نیست، اما شاید نامبردن تعدادی از بزرگترین شرکتهای مرتبط و
غیرمرتبط با IT که از این زبان استفاده میکنند تا حدینشاندهنده عمومیت و
قدرت این زبان باشد.
مشهورترین
کاربر زبان پایتون غول دنیای اینترنت یعنی گوگل است. پایتون بهعنوان زبان
موردعلاقه برنامهنویسان گوگل شناخته میشود. موتور پردازش ابری گوگل با
نام Google
App Engine از پایتون پشتیبانی میکند. شما میتوانید برنامههایی را که
بهمحاسبههاي سنگین و پیچیده نياز دارند با پایتون نوشته و از طریق App
Engine اجرای آن را به سرورهای قدرتمند گوگل بسپارید. ناسا نیز از دیگر
استفادهکنندگان پایتون است. بهصورت دقیقتر شرکت United
Space Alliance شرکت اصلی پیمانکار مسئول نگهداری شاتلها در ناسا از
پایتون برای برنامهنویسیهای علمی، طراحی رابط کاربر و توسعه سریع
نرمافزار بهره میبرد. همچنین شرکت اتودسك که از بزرگترین تولیدکنندگان
نرمافزارهای طراحي به كمك كامپيوتر (CAD) و مصورسازي است، از پایتون
برای ایجاد قابلیت اسکریپتنویسی در محیط مايا استفاده میکند. اما تصور
نکنید که استفاده از پایتون تنها بهمحاسبههاي علمی و کاربردهای مهندسی
محدود است؛ جرج لوكاس شرکت ILM (سرنام Industrial Light and Magic) را در
سال 1975 برای ایجاد جلوههای ویژه فیلم اصلی جنگ ستارگان تأسیس كرد. اين
شركت هم اکنون برای ایجاد جلوههای ویژه، گرافیک کامپیوتری و مدیریت
سیستمها از پایتون استفاده میکند. و درنهایت میتوان از شرکت فيليپس نام
برد. این توليدكننده سرشناس وسایل الکترونیکی و مصرفی برای توسعه سریع
نرمافزار، کنترل خط تولید و سیستم کنترل کیفیت خود از پایتون بهره میبرد.
براي مشاهده فهرست کاملی از کاربران مشهور پایتون براساس زمینه فعالیت
بههمراه خلاصهای کوتاه از نحوه استفاده و دلایل بهکارگیری این زبان
ميتوانيد به آدرسhttp://python.org/about/success مراجعه كنيد.
کدام پایتون ؟ کدام ابزار؟
زبان
پایتون درحالحاضر در دو ويرايش متفاوت منتشر میشود. ويرايش اول
سری2.x پایتون است که اکنون توزیع استاندارد پایتون بهشمارميآيد وبه
نسخه 7/2 رسیده است. توسعه در این دسته برمبنای حفظ سازگاری با نسخههای
قبلی انجام میشود. ويرايش دوم سری 3.x پایتون است که از ابتدا بدون
سازگاری با نسخههای 2.x و با هدف ایجاد قابلیتهای بیشتر و بهروزتر در
زبان تولیدشده و اکنون به نسخه 1/3 رسیده است. این نسخه هنوز همانند سری دوم عمومیت نیافته و بههمیندلیل در این مجموعه مقالهها از سری 2.x استفاده خواهدشد.
بهيقين
تمام کدهای نوشته شده در این مجموعه با هر نسخهاي بالاتر از 2/2 سازگار
بوده و قابل اجرا هستند.این سری مقالهها برمبنای سیستمعامل لینوکس
(بهصورت خاص اوبونتو) نوشته شدهاند. اما تمام کدها روی تمام سیستمها
قابل اجرا هستند. اگر در کدها از توابع و ویژگیهای خاص وابسته به
سیستمعامل استفاده شده باشد، دركنار کد به آن اشارهخواهدشد. درصورتیکه
شما از یکی از توزیعهای مشهور لینوکس استفاده میکنید، به احتمال زیاد
پایتون از پیش روی سیستم شما نصب شده است. برای سیستمعاملهای ویندوز و مک
میتوانید با مراجعه به سایت رسمی پایتون(www.python.org) نسخه مناسب سیستمعامل خود را دانلود کرده و نصب كنيد.
کار
با زبان برنامهنویسی پایتون بههیچ ابزار یا امکانات خاصی احتیاج ندارد.
تنها با داشتن یک ویرایشگر متن ساده نظیر Gedit در لینوکس یا Notepad در
ویندوز میتوانید شروع به کدنویسی کنید. اما درصورتیکه ویرایشگر شما از
رنگبندی کد (Syntax
Highlight) و سیستم تورفتگی خودکار (Auto Indent) پشتیبانی کند، سرعت
کدنویسی و تصحیح شما بسیار بالاتر خواهدرفت. غالب ویرایشگرهای متن لینوکس
نظیر Kate (در محيط KDE) و
(Gedit (GNOME از هر دوی این قابلیتها پشتیبانی میکنند. در ویندوز
میتوانید از ++Notepad که نرمافزاری آزاد و رایگان است استفادهکنید.
همچنین در ویندوز و مک نصب استاندارد پایتون محیط برنامهنویسی پیشفرض
پایتون یا IDLE را نیز بههمراه خواهدداشت که بسیار فراتر از یک ویرایشگر
متن ساده در نوشتن و تصحیح کد به شما کمک خواهدکرد. در تمام توزیعهای
لینوکس، این برنامه از مخازن سیستم بهسادگی قابل نصب است. با مراجعه
بهآدرس http://wiki.python.org/moin/PythonEditors میتوانید فهرست ویرایشگرها و محیطهای توسعه موجود را برای پایتون مشاهده کنید.
مثال مقدماتی 5 دقیقهای
نمونه کد پایتون
فرض کنید میخواهیم حاصل عبارت (g(x)=x/(1-x را برای مقادیر x معادل 0.9
، ...، 0.3 ، 0.2 ، 0.1 بیابیم. کافی است در یک فایل متنی مثلاً با نام
fme.py کد موجود در فهرست 1 را نوشته و در خط فرمان با تایپ دستور زیر آن
را اجرا کنید.
python fme.py $
خروجی
برنامه مانند فهرست 2 خواهد بود (میتوانید این عملیات را در IDLE نیز
انجام دهید. کافی است پس از بازکردن برنامه از منوی File گزینه New
Window را انتخاب كرده، کد موردنظر را تایپ كرده و پس از ذخیره کردن با F5
اجرا كنيد).
for i in rage (10) :
x=0.1*i
print x
print x/ (1-x*x)
فهرست 1
>>>
0.0
0.0
0.1
0.10101010101
0.2
0.208333333333
0.3
0.32967032967
0.4
0.47619047619
0.5
0.666666666667
0.6
0.9375
0.7
1.37254901961
0.8
2.22222222222
0.9
4.73684210526
>>>
فهرست 2
ليستها در پایتون
این برنامه چگونه کار میکند؟ در ابتدا تابع ()range پایتون نمونهای از استفاده ليستها را در این زبان نشان میدهد. در
زبان پایتون ليست چیزی شبیه آرایه است. ليستها یکی از انواع بنیادی
پایتون هستند. تابع ()range درواقع یک ليست را برمیگرداند که در اینجا
عبارت است از [0,1,2,3,4,5,6,7,8,9] . به علامتهای [] توجه کنید.
این
روش رسمی پایتون برای نشان دادن یک ليست است. ليست درواقع ردیفی از اشیاي
مختلف (هر تعداد شيء با هر ترتیب و هر نوعی) است که داخل [] قرار دارند و
با کاما از یکدیگر جدا شدهاند. پس دستور اول کد ما در واقع معادل عبارت
زیر است:
:[for i in [0,1,2,3,4,5,6,7,8,9
همانطور که حدس میزنید این کد باعث ده بار گردش حلقه میشود که در بار نخست i برابر صفر و در بار دهم برابر9 است. پایتون یک ساختار while هم دارد (البته بدون until). همچنین مانند C++/C دستور break برای خروج کامل از حلقه دردسترس است (فهرست3).
>>> x=5
>>> while 1:
x += 1
if x == 8:
print x
break
8
>>>
فهرست 3
تعریف بلوک در پایتون
حال
به علامت دونقطه انتهای دستور for توجه کنید که شروع یک بلوک کد را اعلام
میکند. برخلاف زبانهایی نظیر C++/C یا حتی Perl ، که از {} برای تعریف
بلوک استفاده میکنند، پایتون از ترکیب دونقطه و تورفتگی برای تعریف
بلوکها استفاده میکند. ما با دونقطه به پایتون میگوییم که قصد داریم یک
بلوک کد را آغاز کنیم و با تورفتگی ابتدای خطوط دستورات آن بلوک را تعریف
میکنیم. برای تورفتگی میتوانیم از 3 یا 4 یا 10 فضای خالی استفاده کنیم.
میزان این فضای خالی تا زمانی که در تمام کد رعایت شود، اهمیتی ندارد.
بنابراین،
درصورت وارد کردن کد (فهرست4) با خطای دستوری پایتون مواجه میشویم، زیرا
تنها در صورتی میتوانیم در یک بلوک از تورفتگی استفاده کنیم که بخواهیم
بلوک دیگری در دل آن ایجادکنیم (فهرست5).
>>> for i in range (10) :
print 0.1*i
print g(0.1*i)
File “<pyshell#18>”, line 3
print g(0.1*i)
IndentationError: unexpected indent
>>>
فهرست 4
>>> for i in range (10) :
if i%2 == 1 :
print 0.1*i
0.1
0.3
0.5
0.7
0.9
>>>
فهرست 5
در
این حالت فقط زمانی که متغیر i یک عدد فرد است ما دستور چاپ را اجرا
ميكنيم. عملكرد % یا mod همانند C++/C باقیماندهتقسیم را
بازمیگرداند. دوباره به علامت دونقطه در انتهای دستور if و
فاصلهگذاری ابتدای دستور print دقت کنید. همینطور دقت داشته باشید که
مانند C++/C/perl احتیاجی به علامت نقطه کاما در انتهای دستورات نیست. هر
خط جدید بهمعنای دستوری جدید خواهد بود. درصورتیکه خطی طولانی دارید
میتوانید برای شکستن آن از علامت"\" استفاده کنید (فهرست 6).
>>> y=7
>>> z=12.5
>>> x = y + \
z
>>>
>>> x
19.5
فهرست 6
پوسته تعاملی (خط فرمان پایتون)
یکی
از قابلیتهای جذاب پایتون خط فرمان تعاملی آن است. شما بهصورت معمول
زیاد از این قابلیت استفاده نمیکنید، اما برای بررسی برخی امکانات و
آزمايش سریع دستورات بسیار مفید خواهد بود. هرگاه بهعملکرد درست قسمتی شک
دارید باید از سیستم آزمایش و خطا استفاده کنید و بهترین و سریعترین روش
آزمودن استفاده از خط فرمان تعاملی پایتون است. بهجای نوشتن کد در فایل
متنی و اجرای آن ما کد را در پوسته پایتون نوشته و اجرا میکنیم. با تایپ
دستور Python بهتنهایی یا اجرای IDLE به پوسته پایتون دسترسی خواهیم داشت (شکل زير).
در
اینجا با اجرای پایتون اعلان حالت تعاملی یعنی >>> بهنمایش
درمیآید. سپس شروع به تایپ خط به خط کد میکنیم. هر زمان که داخل یک بلوک
کد باشیم اعلان ویژه " ..." بهنمایش درمیآید. وقتی درانتهای کد یک خط
خالی را وارد کنیم، پایتون متوجه اتمام کد شده و آن را اجرا میكند. درباره
پوسته تعاملی توجه داشته باشید که بین پلتفرمهای مختلف تفاوتهای کمی
وجود دارد. بهعنوانمثال، ممکن است فاصلهگذاری بهصورت خودکار انجام نشود
یا در ویندوز شما با تایپ CTRL + Z از پوسته خارج میشوید، اما در لینوکس
باید از CTRL
+ D استفاده کنید. همچنین توجه کنید که در IDLE اعلان " . . ." بهنمایش
درنمیآید. در حالت تعاملی ارجاع به یک شیء یا ساخت یک شیء یا نوشتن یک
عبارت بدون نسبت دادن آن به یک متغیر باعث چاپ شدن مقدار آن میشود
(فهرست7).
>>>for i in range (4) :
3*i
0
3
6
9
>>> open (“x.txt”)
<open file ‘x.txt’ , mode ‘r’ at 0x01944390>
>>>
فهرست 7
در
مثال دوم ما فایل x.txt را باز کردهایم که نتیجه حاصل یک شیء فایل است و
چون آن را بهمتغیری (معمولاً f) نسبت ندادهایم، شیء فایل چاپ شده است
(فایل x.txt باید در مسیر جستوجوی پایتون موجود باشد).پایتون بهعنوان یک ماشین حساب یکی
از قابلیتهای دیگر پوسته تعاملی امکان استفاده از آن بهعنوان یک ماشین
حساب سریع است. بهعنوانمثال، برای محاسبه مقدار 88.88 بهعلاوه پنج درصد
کافی است، عبارت اول را تایپ کنیم (فهرست8 ) یا برای تبدیل اعداد بین
مبنای 10 و 16 از دستورات قسمت دوم استفاده کنیم.
>>> 1.05*88.88
93.323999999999998
>>>
>>>
>>> 0x12
18
>>> hex (18)
'0x12'
>>>
فهرست 8
اگر
به محاسبههاي ریاضی خاصی احتیاج داشته باشیم باید ابتدا کتابخانه math
را از مجموعه کتابخانههای استاندارد پایتون import کنیم. دقیقاً همانند
سیستمی که در سييا سيشارپ با دستور include# پیادهمیشود، سپس میتوانیم
با سیستم نشانهگذاری نقطهای از توابع تعریف شده در کتابخانه math
استفاده کنیم. در شكل زير استفاده از توابع ()sin و ()sqrt
نشاندادهشدهاست. همچنین توجه کنید که در محیط IDLE با تایپ math و علامت
نقطه و مکثی کوتاه فهرست توابع موجود کتابخانه ظاهرمیشود.
شما
اکنون تا حدودی با زبان پایتون آشنا شدهاید و کموبیش تواناییها و
قابلیتهای آن را میشناسید. اگر در قسمتهای بعدی این مجموعه با ما همراه
باشید، در هر قسمت با جنبهای تازه و کاربردی از این زبان آشنا خواهیدشد.
قسمتهای
بعدی درعینسادگی و کاربردی بودن مستقل از یکدیگر بوده و برای مطالعه و
استفاده از آنها به مهارت خاصی نياز ندارید و حتی لازم نیست به پایتون
چندان مسلط باشید، زیرا در هر قسمت مطالب پایهای مرتبط آورده خواهندشد.
اما درصورتیکه زیبایی پایتون توجه شما را جلب کرده و مشتاق یادگیری بهتر
این زبان هستید، بهترتیب دو منبع زیر را به شما پیشنهاد میکنیم:
1- A Byte of Python (Swaroop C H)
http://www.swaroopch.com
2- Dive into Python (Mark Pilgrim)
http://www.diveintopython.org
متأسفانه
زبان هر دو منبع انگلیسی است و هنوز مرجعی مناسب و رایگان به زبان فارسی
وجود ندارد. درپایان بهخاطر داشتهباشید که دنیای نرمافزار دنیایی است
که در آن تنها محدودیت، خلاقیت و دانش شما از برنامهنویسی است.