Skip to content

Commit b570b77

Browse files
committed
Add lecture: نوشتن برنامه‌های طولانی‌تر
1 parent 0b40dd4 commit b570b77

File tree

1 file changed

+378
-0
lines changed

1 file changed

+378
-0
lines changed

lectures/workspace.md

Lines changed: 378 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,378 @@
1+
---
2+
jupytext:
3+
text_representation:
4+
extension: .md
5+
format_name: myst
6+
format_version: 0.13
7+
jupytext_version: 1.17.2
8+
kernelspec:
9+
name: python3
10+
display_name: Python 3 (ipykernel)
11+
language: python
12+
heading-map:
13+
overview: مروری کلی
14+
working-with-python-files-: کار با فایل‌های Python
15+
development-environments: محیط‌های توسعه
16+
a-step-forward-from-jupyter-notebooks-jupyterlab: 'یک قدم جلوتر از Jupyter Notebooks: JupyterLab'
17+
using-magic-commands: استفاده از دستورات جادویی
18+
using-the-terminal: استفاده از ترمینال
19+
a-walk-through-visual-studio-code: گشت و گذاری در Visual Studio Code
20+
using-the-run-button: استفاده از دکمه run
21+
git-your-hands-dirty: Git را امتحان کنید
22+
---
23+
24+
(workspace)=
25+
```{raw} jupyter
26+
<div id="qe-notebook-header" align="right" style="text-align:right;">
27+
<a href="https://quantecon.org/" title="quantecon.org">
28+
<img style="width:250px;display:inline;" width="250px" src="https://assets.quantecon.org/img/qe-menubar-logo.svg" alt="QuantEcon">
29+
</a>
30+
</div>
31+
```
32+
33+
# نوشتن برنامه‌های طولانی‌تر
34+
35+
## مروری کلی
36+
37+
تا کنون، استفاده از Jupyter Notebooks را در نوشتن و اجرای کد Python بررسی کرده‌ایم.
38+
39+
در حالی که آنها هنگام کار با قطعات کوچک کد کارآمد و سازگار هستند، Notebooks بهترین انتخاب برای برنامه‌ها و اسکریپت‌های طولانی‌تر نیستند.
40+
41+
Jupyter Notebooks برای محاسبات تعاملی (یعنی گردش کارهای علم داده) مناسب هستند و می‌توانند به اجرای قطعات کد یکی یکی کمک کنند.
42+
43+
فایل‌های متنی و اسکریپت‌ها امکان نوشتن و اجرای قطعات بلند کد را به یکباره فراهم می‌کنند.
44+
45+
ما استفاده از اسکریپت‌های Python را به عنوان یک جایگزین بررسی خواهیم کرد.
46+
47+
سپس محیط‌های توسعه Jupyter Lab و Visual Studio Code (VS Code) به همراه یک آشنایی مقدماتی با کنترل نسخه (Git) معرفی می‌شوند.
48+
49+
در این سخنرانی، شما یاد خواهید گرفت که
50+
- با اسکریپت‌های Python کار کنید
51+
- محیط‌های توسعه مختلف را راه‌اندازی کنید
52+
- با GitHub شروع کنید
53+
54+
```{note}
55+
از این به بعد، فرض بر این است که شما یک محیط Anaconda آماده و در حال اجرا دارید.
56+
57+
اگر هنوز این کار را نکرده‌اید، ممکن است بخواهید [یک محیط conda جدید ایجاد کنید](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands).
58+
```
59+
60+
## کار با فایل‌های Python
61+
62+
فایل‌های Python هنگام نوشتن بلوک‌های بلند و قابل استفاده مجدد کد استفاده می‌شوند - طبق قرارداد، آنها پسوند `.py` دارند.
63+
64+
بیایید با کار با مثال زیر شروع کنیم.
65+
66+
```{code-cell} ipython3
67+
:caption: sine_wave.py
68+
:lineno-start: 1
69+
70+
import matplotlib.pyplot as plt
71+
import numpy as np
72+
73+
x = np.linspace(0, 10, 100)
74+
y = np.sin(x)
75+
76+
plt.plot(x, y)
77+
plt.xlabel('x')
78+
plt.ylabel('y')
79+
plt.title('Sine Wave')
80+
plt.show()
81+
```
82+
83+
از آنجا که راه‌های مختلفی برای اجرای کد وجود دارد، ما آنها را در زمینه محیط‌های توسعه مختلف بررسی خواهیم کرد.
84+
85+
یکی از مزایای اصلی استفاده از اسکریپت‌های Python در این واقعیت نهفته است که می‌توانید قابلیت‌ها را از اسکریپت‌های دیگر به اسکریپت فعلی یا Jupyter Notebook خود "import" کنید.
86+
87+
بیایید کد قبلی را به یک تابع بازنویسی کنیم و آن را در فایلی به نام `sine_wave.py` بنویسیم.
88+
89+
```{code-cell} ipython3
90+
:caption: sine_wave.py
91+
:lineno-start: 1
92+
93+
%%writefile sine_wave.py
94+
95+
import matplotlib.pyplot as plt
96+
import numpy as np
97+
98+
# Define the plot_wave function.
99+
def plot_wave(title : str = 'Sine Wave'):
100+
x = np.linspace(0, 10, 100)
101+
y = np.sin(x)
102+
103+
plt.plot(x, y)
104+
plt.xlabel('x')
105+
plt.ylabel('y')
106+
plt.title(title)
107+
plt.show()
108+
```
109+
110+
```{code-cell} ipython3
111+
:caption: second_script.py
112+
:lineno-start: 1
113+
114+
import sine_wave # Import the sine_wave script
115+
116+
# Call the plot_wave function.
117+
sine_wave.plot_wave("Sine Wave - Called from the Second Script")
118+
```
119+
120+
این به شما امکان می‌دهد کد خود را به قطعات تقسیم کرده و پایگاه کد خود را بهتر ساختار دهید.
121+
122+
برای اطلاعات بیشتر در مورد import کردن قابلیت‌ها، به استفاده از [ماژول‌ها](https://docs.python.org/3/tutorial/modules.html) و [بسته‌ها](https://docs.python.org/3/tutorial/modules.html#packages) نگاه کنید.
123+
124+
## محیط‌های توسعه
125+
126+
یک محیط توسعه یک فضای کاری یکپارچه است که در آن می‌توانید
127+
- کد خود را ویرایش و اجرا کنید
128+
- تست و اشکال‌زدایی کنید
129+
- فایل‌های پروژه را مدیریت کنید
130+
131+
این سخنرانی شما را با نحوه کار دو محیط توسعه آشنا می‌کند.
132+
133+
## یک قدم جلوتر از Jupyter Notebooks: JupyterLab
134+
135+
JupyterLab یک محیط توسعه مبتنی بر مرورگر برای Jupyter Notebooks، اسکریپت‌های کد و فایل‌های داده است.
136+
137+
اگر می‌خواهید قبل از نصب محلی آن را آزمایش کنید، می‌توانید [JupyterLab را در مرورگر امتحان کنید](https://jupyter.org/try-jupyter/lab/).
138+
139+
می‌توانید JupyterLab را با استفاده از pip نصب کنید
140+
141+
```
142+
> pip install jupyterlab
143+
```
144+
145+
و آن را در مرورگر، مشابه Jupyter Notebooks، راه‌اندازی کنید.
146+
147+
```
148+
> jupyter-lab
149+
```
150+
151+
```{figure} /_static/lecture_specific/workspace/jupyter_lab_cmd.png
152+
:figclass: auto
153+
```
154+
155+
می‌بینید که Jupyter Server در حال اجرا روی پورت 8888 بر روی localhost است.
156+
157+
رابط کاربری زیر باید به طور خودکار در مرورگر پیش‌فرض شما باز شود - در غیر این صورت، CTRL + Click روی URL سرور.
158+
159+
```{figure} /_static/lecture_specific/workspace/jupyter_lab.png
160+
:figclass: auto
161+
```
162+
163+
روی موارد زیر کلیک کنید
164+
165+
- دکمه Python 3 (ipykernel) در زیر Notebooks برای باز کردن یک Jupyter Notebook جدید
166+
- دکمه Python File برای باز کردن یک اسکریپت Python جدید (.py)
167+
168+
همیشه می‌توانید این تب راه‌انداز را با کلیک بر روی دکمه '+' در بالا باز کنید.
169+
170+
تمام فایل‌ها و پوشه‌ها در دایرکتوری کاری شما را می‌توان در File Browser (تب سمت چپ) یافت.
171+
172+
می‌توانید با استفاده از دکمه‌های موجود در بالای تب File Browser، فایل‌ها و پوشه‌های جدید ایجاد کنید.
173+
174+
```{figure} /_static/lecture_specific/workspace/file_browser.png
175+
:figclass: auto
176+
```
177+
می‌توانید با مراجعه به تب Extensions، افزونه‌هایی را نصب کنید که قابلیت‌های JupyterLab را افزایش می‌دهند.
178+
179+
```{figure} /_static/lecture_specific/workspace/extensions.png
180+
:figclass: auto
181+
```
182+
برگشت به اسکریپت‌های مثال قبلی، دو راه برای کار با آنها در JupyterLab وجود دارد.
183+
184+
- استفاده از دستورات جادویی
185+
- استفاده از ترمینال
186+
187+
### استفاده از دستورات جادویی
188+
189+
Jupyter Notebooks و JupyterLab از استفاده از [دستورات جادویی](https://ipython.readthedocs.io/en/stable/interactive/magics.html) پشتیبانی می‌کنند - دستوراتی که قابلیت‌های یک Jupyter Notebook استاندارد را گسترش می‌دهند.
190+
191+
دستور جادویی `%run` به شما امکان می‌دهد یک اسکریپت Python را از درون یک Notebook اجرا کنید.
192+
193+
این یک راه راحت برای اجرای اسکریپت‌هایی است که در همان دایرکتوری Notebook خود روی آنها کار می‌کنید و خروجی‌ها را در داخل Notebook ارائه می‌دهید.
194+
195+
```{figure} /_static/lecture_specific/workspace/jupyter_lab_py_run.png
196+
:figclass: auto
197+
```
198+
199+
### استفاده از ترمینال
200+
201+
با این حال، اگر فقط به دنبال اجرای فایل `.py` هستید، گاهی اوقات استفاده از ترمینال آسان‌تر است.
202+
203+
از راه‌انداز یک ترمینال باز کنید و دستور زیر را اجرا کنید.
204+
205+
```
206+
> python <path to file.py>
207+
```
208+
209+
```{figure} /_static/lecture_specific/workspace/jupyter_lab_py_run_term.png
210+
:figclass: auto
211+
```
212+
213+
```{note}
214+
همچنین می‌توانید اسکریپت را خط به خط با باز کردن یک کنسول ipykernel اجرا کنید، یا
215+
- از راه‌انداز
216+
- یا با کلیک راست در داخل Notebook و انتخاب Create Console for Editor
217+
218+
از Shift + Enter برای اجرای یک خط کد استفاده کنید.
219+
```
220+
221+
## گشت و گذاری در Visual Studio Code
222+
223+
Visual Studio Code (VS Code) یک ویرایشگر کد و فضای کاری توسعه است که می‌تواند
224+
- در [مرورگر](https://vscode.dev/) اجرا شود.
225+
- به عنوان یک [نصب محلی](https://code.visualstudio.com/docs/?dv=win) اجرا شود.
226+
227+
هر دو رابط کاربری یکسان هستند.
228+
229+
وقتی VS Code را راه‌اندازی می‌کنید، رابط کاربری زیر را خواهید دید.
230+
231+
```{figure} /_static/lecture_specific/workspace/vs_code_home.png
232+
:figclass: auto
233+
```
234+
235+
از طریق راهنماهای گام به گام، نحوه سفارشی‌سازی VS Code به دلخواه خود را کشف کنید.
236+
237+
```{figure} /_static/lecture_specific/workspace/vs_code_walkthrough.png
238+
:figclass: auto
239+
```
240+
هنگام مواجهه با پیام زیر، ادامه دهید و تمام افزونه‌های پیشنهادی را نصب کنید.
241+
242+
```{figure} /_static/lecture_specific/workspace/vs_code_install_ext.png
243+
:figclass: auto
244+
```
245+
همچنین می‌توانید افزونه‌ها را از تب Extensions نصب کنید.
246+
247+
```{figure} /_static/lecture_specific/workspace/vs_code_extensions.png
248+
:figclass: auto
249+
```
250+
Jupyter Notebooks (فایل‌های `.ipynb`) را می‌توان در VS Code کار کرد.
251+
252+
مطمئن شوید که قبل از تلاش برای باز کردن یک Jupyter Notebook، افزونه Jupyter را از تب Extensions نصب کنید.
253+
254+
یک فایل جدید ایجاد کنید (در تب file Explorer) و آن را با پسوند `.ipynb` ذخیره کنید.
255+
256+
یک kernel/environment برای اجرای Notebook در آن با کلیک بر روی دکمه Select Kernel در گوشه بالا سمت راست ویرایشگر انتخاب کنید.
257+
258+
```{figure} /_static/lecture_specific/workspace/vs_code_kernels.png
259+
:figclass: auto
260+
```
261+
262+
VS Code همچنین از طریق تب Source Control قابلیت کنترل نسخه عالی دارد.
263+
264+
```{figure} /_static/lecture_specific/workspace/vs_code_git.png
265+
:figclass: auto
266+
```
267+
حساب GitHub خود را به VS Code متصل کنید تا تغییرات را به مخازن خود push و pull کنید.
268+
269+
بحث‌های بیشتر در مورد کنترل نسخه را می‌توان در بخش بعدی یافت.
270+
271+
برای باز کردن یک Terminal جدید در VS Code، روی تب Terminal کلیک کرده و New Terminal را انتخاب کنید.
272+
273+
VS Code یک Terminal جدید در همان دایرکتوری که در آن کار می‌کنید باز می‌کند - یک PowerShell در Windows و یک Bash در Linux.
274+
275+
می‌توانید shell را تغییر دهید یا یک instance جدید از طریق منوی کشویی در انتهای سمت راست تب ترمینال باز کنید.
276+
277+
```{figure} /_static/lecture_specific/workspace/vs_code_terminal_opts.png
278+
:figclass: auto
279+
```
280+
281+
VS Code به شما کمک می‌کند محیط‌های conda را بدون استفاده از خط فرمان مدیریت کنید.
282+
283+
Command Palette را باز کنید (CTRL + SHIFT + P یا از منوی کشویی تحت تب View) و ```Python: Select Interpreter``` را جستجو کنید.
284+
285+
این محیط‌های موجود را بارگذاری می‌کند.
286+
287+
همچنین می‌توانید با استفاده از ```Python: Create Environment``` در Command Palette، محیط‌های جدید ایجاد کنید.
288+
289+
یک محیط جدید (پوشه .conda) در دایرکتوری کاری فعلی ایجاد می‌شود.
290+
291+
در مورد اسکریپت‌های مثال قبلی، باز هم دو راه برای کار با آنها در VS Code وجود دارد.
292+
293+
- استفاده از دکمه run
294+
- استفاده از ترمینال
295+
296+
### استفاده از دکمه run
297+
298+
می‌توانید اسکریپت را با کلیک بر روی دکمه run در گوشه بالا سمت راست ویرایشگر اجرا کنید.
299+
300+
```{figure} /_static/lecture_specific/workspace/vs_code_run.png
301+
:figclass: auto
302+
```
303+
304+
همچنین می‌توانید اسکریپت را به صورت تعاملی با انتخاب گزینه **Run Current File in Interactive Window** از منوی کشویی اجرا کنید.
305+
306+
```{figure} /_static/lecture_specific/workspace/vs_code_run_button.png
307+
:figclass: auto
308+
```
309+
این یک کنسول ipykernel ایجاد می‌کند و اسکریپت را اجرا می‌کند.
310+
311+
### استفاده از ترمینال
312+
313+
دستور `python <path to file.py>` بر روی کنسول انتخابی شما اجرا می‌شود.
314+
315+
اگر از یک دستگاه Windows استفاده می‌کنید، می‌توانید یا از Anaconda Prompt یا Command Prompt استفاده کنید - اما به طور کلی نه از PowerShell.
316+
317+
در اینجا یک اجرای کد قبلی آمده است.
318+
319+
```{figure} /_static/lecture_specific/workspace/sine_wave_import.png
320+
:figclass: auto
321+
```
322+
323+
```{note}
324+
اگر می‌خواهید بسته‌ها را توسعه دهید و ابزارهایی با استفاده از Python بسازید، ممکن است بخواهید به [استفاده از Docker containers و VS Code](https://github.com/RamiKrispin/vscode-python) نگاه کنید.
325+
326+
با این حال، این خارج از تمرکز این سخنرانی‌ها است.
327+
```
328+
329+
## Git را امتحان کنید
330+
331+
این بخش شما را با git و GitHub آشنا می‌کند.
332+
333+
[Git](https://git-scm.com/) یک *سیستم کنترل نسخه* است --- نرم‌افزاری که برای مدیریت پروژه‌های دیجیتال مانند کتابخانه‌های کد استفاده می‌شود.
334+
335+
در بسیاری از موارد، مجموعه‌های مرتبط فایل‌ها --- که *مخازن* نامیده می‌شوند --- بر روی [GitHub](https://github.com/) ذخیره می‌شوند.
336+
337+
GitHub یک دنیای شگفت‌انگیز از پروژه‌های کدنویسی مشارکتی است.
338+
339+
به عنوان مثال، میزبان بسیاری از کتابخانه‌های علمی است که بعداً از آنها استفاده خواهیم کرد، مانند [این یکی](https://github.com/pandas-dev/pandas).
340+
341+
Git نرم‌افزار زیربنایی است که برای مدیریت این پروژه‌ها استفاده می‌شود.
342+
343+
Git یک ابزار بسیار قدرتمند برای همکاری توزیع شده است --- به عنوان مثال، ما از آن برای به اشتراک گذاشتن و همگام‌سازی تمام فایل‌های منبع این سخنرانی‌ها استفاده می‌کنیم.
344+
345+
دو نوع اصلی Git وجود دارد
346+
347+
1. نسخه [خط فرمان Git](https://git-scm.com/downloads) ساده وانیلی
348+
2. نسخه‌های مختلف GUI کلیک و اشاره
349+
* برای مثال، [نسخه GitHub](https://github.com/apps/desktop) یا Git GUI یکپارچه شده در IDE شما را ببینید.
350+
351+
در صورتی که قبلاً این کار را نکرده‌اید، امتحان کنید
352+
353+
1. نصب Git.
354+
1. دریافت یک کپی از [QuantEcon.py](https://github.com/QuantEcon/QuantEcon.py) با استفاده از Git.
355+
356+
به عنوان مثال، اگر نسخه خط فرمان را نصب کرده‌اید، یک ترمینال باز کنید و وارد کنید.
357+
358+
```bash
359+
git clone https://github.com/QuantEcon/QuantEcon.py
360+
```
361+
(این فقط `git clone` در جلوی URL مخزن است)
362+
363+
این دستور تمام اجزای لازم را برای بازسازی سخنرانی‌ای که اکنون می‌خوانید دانلود می‌کند.
364+
365+
به عنوان وظیفه دوم،
366+
367+
1. در [GitHub](https://github.com/) ثبت نام کنید.
368+
1. به 'forking' مخازن GitHub نگاه کنید (forking به معنای ایجاد کپی خود از یک مخزن GitHub است که در GitHub ذخیره می‌شود).
369+
1. [QuantEcon.py](https://github.com/QuantEcon/QuantEcon.py) را fork کنید.
370+
1. fork خود را در یک دایرکتوری محلی clone کنید، ویرایش‌ها انجام دهید، آنها را commit کنید و به مخزن GitHub fork شده خود push کنید.
371+
1. اگر بهبود ارزشمندی ایجاد کردید، برای ما یک [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) ارسال کنید!
372+
373+
برای خواندن در مورد این موضوعات و سایر موضوعات، امتحان کنید
374+
375+
* [مستندات رسمی Git](https://git-scm.com/doc).
376+
* خواندن مستندات در [GitHub](https://docs.github.com/en).
377+
* [کتاب Pro Git](https://git-scm.com/book) توسط Scott Chacon و Ben Straub.
378+
* یکی از هزاران آموزش Git در اینترنت.

0 commit comments

Comments
 (0)