2. بیاین شروع کنیم#

2.1. مقدمه#

در این بخش شما خواهید آموخت که چگونه:

  1. از پایتون در فضای ابری استفاده کنید

  2. یک محیط محلی پایتون راه اندازی و اجرا کنید

  3. دستورات ساده ی پایتون را اجرا کنید

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

  5. کتابخانه های برنامه نویسی موردنیاز برای این دوره را نصب کنید

2.2. پایتون در فضای ابری#

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

بیشتر دوره های ما شامل یک دکمه «راه اندازی نوت بوک» (با یک آیکون پخش) در بالای سمت راست هستند که شما را به یک نسخه قابل اجرا در Colab متصل می کند.

2.3. نصب محلی#

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

با این حال، نصب محلی در مقایسه با گزینه های ابری مانند Colab نیاز به کار بیشتری دارند. در ادامه ی این بخش، جزئیات مرتبط با نصب محلی توضیح داده می شود.

2.3.1. توزیع آناکوندا#

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

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

بنابراین، بهترین رویکرد برای اهداف ما نصب توزیعی از پایتون است که شامل زبان اصلی پایتون و نسخه های سازگار از محبوب ترین کتابخانه های علمی باشد که بهترین توزیع برای این منظور Anaconda Python است.

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

آناکوندا همچنین دارای سیستم مدیریت بسته نیز هست که کتابخانه های برنامه نویسی شما را سازماندهی می کند.

تمام مطالبی که در ادامه خواهید آموخت بر این فرض استوار است که شما این توصیه ها را پذیرفته اید!

2.3.2. نصب آناکوندا#

برای نصب آناکوندا فایل باینری را از سایت اصلی آناکوندا دانلود کرده و دستورالعمل ها را دنبال کنید.

نکات:

  • اطمینان حاصل کنید که نسخه ی مناسب سیستم عامل خود را نصب می کنید.

  • اگر در طول فرایند نصب از شما پرسیده شد که آیا آناکوندا را به عنوان نصب پیش فرض پایتون انتخاب می کنید، گزینه “بله” را انتخاب کنید.

2.3.3. به روزرسانی آناکوندا#

آناکوندا ابزاری به اسم conda برای مدیریت و ارتقاء بسته های آناکوندای شما فراهم می کند. یکی از دستورات کوندا که باید به طور منظم اجرا کنید، دستوری است که کل توزیع آناکوندا را به روز می کند. به عنوان یک تمرین، لطفا مراحل زیر را اجرا کنید:

  1. یک ترمینال باز کنید

  2. عبارت conda update anaconda را تایپ کنید

برای اطلاعات بیشتر درباره کوندا، در ترمینال عبارت “ conda help “ را تایپ کنید.

2.4. ژوپیتر نوت بوک#

ژوپیتر نوت بوک ها یکی از چندین راه های قابل دسترس برای ارتباط برقرار کردن با پایتون هستند. ژوپیتر نوت بوک ها از یک رابط مبتنی بر مرورگر برای دسترسی به پایتون استفاده می کنند که دارای ویژگی های زیر است:

  • قابلیت نوشتن و اجرای دستورات پایتون

  • خروجی قالب بندی شده در مرورگر، شامل جداول، نمودارها، انیمیشن ها و غیره

  • امکان ترکیب متن قالب بندی شده و نمایش عبارات ریاضی

به دلیل این قابلیت ها، امروزه ژوپیتر یکی از ابزارهای مهم در اکوسیستم محاسبات علمی محسوب می شود. در اینجا تصویری از اجرای کد در یک ژوپیتر نوت بوک آورده شده است.

نمونه اجرای کد

درحالیکه ژوپیتر تنها روش برنامه نویسی در پایتون نیست، اما بهترین گزینه برای موقعیت هایی است که:

  • می خواهید برنامه نویسی با پایتون را شروع کنید

  • ایده های جدید را آزمایش کنید یا فقط بخش های کوچکی از کد را بررسی کنید

  • قصد دارید از محیط های تعاملی قدرتمند آنلاین مانند Google Colab استفاده کنید

  • می خواهید ایده های علمی خود را با دانشجویان یا همکاران خود به اشتراک بگذارید و با آنها همکاری کنید

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

2.4.1. راه اندازی ژوپیتر نوت بوک#

بعد از نصب آناکوندا، شما می توانید ژوپیتر نوت بوک را اجرا کنید.

برای اینکار می توانید:

  • در منوی برنامه های خود به دنبال Jupyter بگردید

  • یک ترمینال باز کنید و دستور jupyter notebookرا اجرا کنید

    • کاربران ویندوز باید به جای “ترمینال” از “Anaconda Command Prompt” استفاده کنند.

اگر روش دوم را انتخاب کنید، با چیزی مشابه تصویر زیر رو به رو خواهید شد.

ترمینال

خروجی نشان می دهد که نوت بوک در /http://localhost:8888 در حال اجرا است.

  • localhost اسم رایانه ی محلی شماست

  • 8888 شماره پورتی است که رایانه ی شما از آن استفاده می کند

بنابراین، هسته ی ژوپیتر در حال دریافت دستورات پایتون از طریق پورت 8888 در رایانه ی محلی شماست.

اگر همه چیز به درستی پیش رفته باشد، مرورگر پیش فرض شما باید به طور خودکار یک صفحه ی وب مشابه تصویر زیر را باز کرده باشد.

ژوپیتر

آنچه در اینجا می بینید داشبورد ژوپیتر نام دارد.

اگر به آدرس اینترنتی (URL) بالای صفحه نگاه کنید، باید چیزی مشابه localhost:8888 وجود داشته باشد که با پیام قبلی مطابقت دارد.

در صورتیکه همه چیز به درستی کار کرده باشد، اکنون می توانید روی “New” در گوشه ی بالا سمت راست کلیک کنید و Python 3 یا چیزی مشابه آن را انتخاب کنید.

در زیر تصویری که در سیستم ما نشان می دهد را میتوانید ببینید: ژوپیتر2

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

2.4.2. اصول اولیه نوت بوک#

بیاید با نحوه ی ویرایش کد و اجرای برنامه های ساده شروع کنیم.

2.4.2.1. اجرای سلول ها#

در تصویر قبل، سلول درون یک کادر سبز رنگ قرار دارد که نشان می دهد، سلول درحالت ویرایش قرار دارد.

در این حالت، هر چیزی که تایپ کنید، درون سلول نمایش داده می شود و مکان نما چشمک می زند.

وقتی آماده ی اجرای کدی که در سلول نوشتید هستید، به جای آنکه به طور معمول از “Enter” استفاده کنید، کلیدهای “Shift + Enter” را بزنید.

ژوپیتر3

Note

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

2.4.2.2. ویرایش در حالت های مختلف#

نکته بعدی که باید درباره ی نوت بوک ژوپیتر بدانید این است که از سیستمی برای ویرایش استفاده می کند که شامل حالت های مختلف است.

یعنی عملکرد صفحه کلید بسته به حالتی که در آن قرار دارید، متفاوت خواهد بود.

دوحالت اصلی وجود دارد:

  1. حالت ویرایش (Edit mode)

    • با یک کادر سبز دور سلول و یک مکان نمای چشمک زن مشخص می شود.

    • هر چیزی که تایپ کنید، به همان شکل در سلول نوشته می شود.

  2. حالت فرمان (Command mode)

    • کادر سبز با یک کادر آبی جایگزین می شود.

    • کلیدهای صفحه کلید به عنوان فرمان تفسیر می شوند. (مثلا با زدن کلید b ، یک سلول جدید در زیر سلول فعلی ایجاد می شود).

برای جا به جایی بین حالت ها:

  • برای رفتن از حالت ویرایش به حالت فرمان: کلید Esc یا Ctrl-M را بزنید.

  • برای رفتن از حالت فرمان به حالت ویرایش: کلید Enter را فشار دهید یا درون یک سلول کلیک کنید.

وقتی به این رفتار حالت محور عادت کنید، کار با ژوپیتر نوت بوک بسیار سریع و کارآمد خواهد بود.

2.4.2.3. وارد کردن یونیکد (مثلا حروف یونانی)#

پایتون از یونیکد پشتیبانی می کند، بنابراین می توانید از کاراکترهایی مانند \(\alpha\) و \(\beta\) در نام گذاری کدهای خود استفاده کنید.

در یک سلول، عبارت alpha/ را تایپ کنید و سپس کلید Tab را از صفحه کیبورد خود فشار دهید.

2.4.2.4. یک برنامه ی آزمایشی#

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

می توانیم از این برنامه نمونه استفاده کنیم:http://matplotlib.org/3.1.1/gallery/pie_and_polar_charts/polar_bar.html.

در آن صفحه، شما کد زیر را مشاهده خواهید کرد:

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

# Compute pie slices
N = 20
θ = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
colors = plt.cm.viridis(radii / 10.)

ax = plt.subplot(111, projection='polar')
ax.bar(θ, radii, width=width, bottom=0.0, color=colors, alpha=0.5)

plt.show()
_images/bf8c98cdb6cc834cec9e871734f3aafea4e60e3f8eb8254be988d61d05ed8368.png

فعلا نگران جزئیات نباشید، بیاید فقط اجرا کنیم و ببینیم چه اتفاقی می افتد.

ساده ترین راه برای اجرای این کد این است که که آن را در یک سلول از نوت بوک کپی و جایگذاری کنید.

امیدواریم که نموداری مشابه دریافت کنید!

2.4.3. کارکردن با نوت بوک#

در ادامه چند نکته درباره ی کار با ژوپیتر نوت بوک آورده شده است.

2.4.3.1. تکمیل خودکار با کلید Tab#

در جلسه ی قبل این خط از کد را اجرا کردیم: import numpy as np

  • Numpy یک کتابخانه ی عددی است که به طور گسترده با آن کار خواهیم کرد.

بعد از این دستور، می توانیم به توابع کتابخانه Numpy با استفاده از نحو np.function_nameدسترسی داشته باشیم.

  • برای مثال بیاید دستور np.random.randn(3) را امتحان کنید.

می توانیم ویژگی های مختلف np را با استفاده از کلید Tab بررسی کنیم.

برای نمونه، کافی است تایپ کنیم np.random.r و سپس کلید Tab را فشار دهیم.

numpy

ژوپیتر نوت بوک چندین گزینه ی تکمیل کننده ی خودکار را برای انتخاب در اختیارتان قرار می دهد.

به همین ترتیب، کلید Tab هم یادآوری می کند که چه قابلیت هایی در دسترس شما قرار دارد و هم باعث صرفه جویی در تایپ می شود.

2.4.3.2. راهنمای آنلاین#

برای مشاهده ی راهنمای نحو np.random.randn کافی است دستور ?np.random.randn را اجرا کنید.

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

online help

با کلیک بر روی ضربدر در قسمت بالایی سمت راست در نیم پنجره ی ایجاد شده برای راهنمای دستور، راهنمای آنلاین بسته می شود.

در ادامه، بیشتر درباره ی نحوه ی ایجاد مستندات مشابه بیشتر یادخواهیم گرفت!

2.4.3.3. سایر محتواها#

ژوپیتر نوت بوک علاوه بر اجرای کد، به شما امکان می دهد تا متن، معادلات، نمودارها و حتی ویدیوها را در صفحه جایگذاری کنید.

برای مثال، می توانیم به جای کد ، ترکیبی از متن ساده و لاتکس را وارد کنیم.

سپس، با فشردن Esc وارد حالت فرمان (Command mode) می شویم و با تایپ m مشخص می کنیم که در حال نوشتن یک فایل Markdown هستیم، Markdown یک زبان نشانه گذاری متن شبیه به لاتکس اما ساده تر از آن است.

(همچنین می توانید با استفاده از ماوس، گزینه “ Markdown “ را از منوی کشویی “Code” که درست زیر نوار منو قرار دارد، انتخاب کنید.)

markdown

حال ما کلیدهای Shift + Enter را میزنیم تا نتیجه ای مطابق تصویر زیر ایجاد کنیم:

resultmd

2.4.4. اشکال زدایی کد#

به فرآیند شناسایی و حذف خطاها از یک برنامه، اشکال زدایی یا Debugging می گویند.

ازآنجایی که شما زمان زیادی را صرف اشکال زدایی کد خواهید کرد، بنابراین یادگرفتن نحوه ی انجام درست آن ضروری است.

اگر از نسخه ی جدیدتری از ژوپیتر نوت بوک استفاده می کنید، باید نماد یک حشره (bug) را در انتهای سمت راست نوار ابزار خود داشته باشید.

dedugicon

با کلیک بر روی این آیکون، اشکال زدایی ژوپیتر فعال می شود.

Note

ممکن است لازم باشد پنل اشکال زدایی را نیز باز کنید برای اینکار می توانید از این مسیر پیش بروید.(View -> Debugger Panel)

می توانید با کلیک روی شماره خط سلولی که قصد اشکال زدایی آن را دارید، نقاط توقف (breakpoints) را تنظیم کنید.

وقتی سلول را اجرا می کنید، اشکال زدایی در نقطه ی توقفی که تنظیم کرده بودید، متوقف می شود.

سپس می توانید خط به خط کد را با استفاده از دکمه های “Next” که در نوار ابزار CALLSTACK در پنجره ی سمت راست قرار دارد، بررسی کنید.

degug2

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

2.4.5. اشتراک گذاری نوت بوک ها#

فایل های نوت بوک صرفا فایل های متنی با ساختار JSON هستند که معمولا پسوند .ipynb دارند.

شما می توانید آن ها را به همان شیوه که سایر فایل ها را به اشتراک می گذارید، ارسال کنید یا اینکه از سرویس های وب مانند nbviewer استفاده کنید.

نوت بوک هایی که شما در آن سایت مشاهده می کنید، نسخه های ایستا (static) با فرمت HTML هستند. برای اجرای نوت بوک ها، کافی است روی آیکون دانلود در بالا سمت راست کلیک کنید و آن را با فرمت ipynb ذخیره کنید.

سپس فایل را در جایی روی رایانه ی خودتان ذخیره کنید و از طریق داشبورد ژوپیتر آن را انتخاب کنید و طبق توضیحاتی که پیشتر گفته شد اجرا کنید.

Note

اگر به اشتراک گذاری نوت بوک هایی با محتوای تعاملی علاقه مند هستید، پیشنهاد میکنیم Binder را بررسی کنید.

همچنین برای همکاری با دیگران در نوت بوک ها، می توانید از پلتفرم های زیر استفاده کنید:

و اگر میخواهید کدها را به طور اختصاصی برای خود نگه دارید و همچنان از رابط کاربری آشنا مثل JupyterLab و Notenook استفاده کنید، پس نگاهی به JupyterLab Real-Time Collaboration extension نیز بیندازید.

2.4.6. سایت QuantEcon Note#

همچنین QuantEcon دارای یک سایت اختصاصی برای به اشتراک گذاری ژوپیتر نوت بوک های مرتبط با اقتصاد به نام QuantEcon Notes می باشد.

نوت بوک هایی که در QuantEcon Note ارسال می شوند، از طریق لینک قابل اشتراگ گذاری هستند و جامعه ی کاربران می توانند به آنها رأی دهند یا نظرشان را به اشتراک بگذارند.

2.5. نصب کتابخانه ها#

بیشتر کتابخانه های موردنیاز ما در این دوره در آناکوندا وجود دارند. اما سایر کتابخانه ها را می توان با conda یا pip نصب کرد.

یکی از کتابخانه هایی که از آن استفاده خواهیم کرد، QuantEcon.py است.

شما می توانید با اجرای ژوپیتر و تایپ دستور زیر درون یک سلول QuantEcon.py را نصب کنید.

!conda install quantecon

همچنین می توانید دستور زیر را درون ترمینال تایپ کنید:

conda install quantecon

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

همچنین برای به روزرسانی به آخرین نسخه که توصیه می شود به طور منظم انجام دهید، می توانید از دستور زیر استفاده کنید:

conda upgrade quantecon

کتابخانه دیگری که از آن استفاده خواهیم کرد interpolation.py است.

این کتابخانه را نیز می توانید با استفاده از دستور زیر در ژوپیتر نصب کرد.

!conda install -c conda-forge interpolation

2.6. کار با فایل های پایتون#

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

برای نمونه می توانیم یک نوع از این فایل ایجاد کنیم:

%%writefile foo.py

print("foobar")
Overwriting foo.py

دستور بالا خط print("foobar") را در فایلی به نام foo.py در مسیر فعلی ذخیره می کند.

در این کد دستور %%writefile نمونه ای از یک جادوی سلولی (cell magic) است!

2.6.1. ویرایش و اجرا#

اگر با کدی مواجه شدید که در یک فایل با پسوند *.py ذخیره شده است، لازم است به این دو سوال توجه کنید:

  1. چگونه باید آن را اجرا کرد؟

  2. چگونه می توان آن را ویرایش یا تغییری در آن اعمال کرد؟

برای این کارها شما دو گزینه پیش روی خود دارید!

2.6.1.1. گزینه اول: JupyterLab#

محیط JupyterLab یک محیط توسعه ی یکپارچه (IDE) است که بر پایه ی نوت بوک ها ژوپیتر ساخته شده است. با استفاده از JupyterLab می توانید فایل هایی با پسوند *.py را همانند ژوپیتر نوت بوک ها را ویرایش و اجرا کنید.

برای اجرای JupyterLab می توانید آن را در فهرست برنامه ها جستجو کنید یا در ترمینال دستور jupyter-lab را وارد نمایید.

اکنون باید بتوانید فایل foo.py را که در مرحله ی قبل ساخته بودید در JupyterLab بازکرده، ویرایش و اجرا کنید.

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

2.6.1.2. گزینه دوم: استفاده از یک ویرایشگر متن#

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

به طور کلی، ویرایشگر متن برنامه ای است که به طور اختصاصی برای کار با فایل های متنی مانند برنامه های پایتون طراحی شده است.

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

یک ویرایشگر خوب امکانات زیر را ارائه می دهد:

  • فرمان های کارآمد برای ویرایش متن(مثل کپی، جایگذاری، جست وجو و جایگزینی)

  • برجسته سازی نحوی (syntax highlighting) برای خوانایی بهتر کد و امکانات مشابه دیگر

در حال حاضر، یکی از محبوب ترین ویرایشگرهای متنی برای برنامه نویسی VS Code است، که کاربری بسیار آسانی دارد و افزونه های باکیفیت زیادی برای آن عرضه شده است.

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

2.7. تمرینات#

Exercise 2.1

اگر هنوز ژوپیتر در حال اجرا است، آن را با فشردن ترکیب کلیدها Ctrl-C در ترمینالی که از آن شروع کرده اید، ببندید.

حالا دوباره ژوپیتر را این بار با استفاده از کد دستوری jupyter notebook --no-browser باز کنید.

با این کار، هسته ی ژوپیتز (kernel) بدون آنکه مرورگر به صورت خودکار باز شود، راه اندازی می شود.

همچنین به پیامی که هنگام شروع نمایش داده می شود دقت کنید: باید یک آدرس(URL) مانند http://localhost:8888 به شما بدهد که نوت بوک در آن درحال اجرا است.

اکنون وقت آن است که:

  1. مرورگر خود را اجرا کنید (یا اگر باز است، یک تب جدید باز کنید.)

  2. آدرسی که در مرحله قبل داده شده (مثلا http://localhost:8888) را در نوار آدرس وارد کنید.

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

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