Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions source/lessons/l02-setup-python.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@

البته امکان دستکاری Path در هر زمانی وجود دارد:

مسیر Control Panel > System > Advanced system settings > Advanced را طی کرده و سپس با کلیک بر روی Environment Variables پنجره‌ جدیدی باز می‌گردد که در قسمت System variables آن Path را پیدا و انتخاب نمایید. بر روی Edit در پایین همان پنجره کلیک کرده و عبارت ``;C:\Python34;C:\Python34\Scripts`` (برای نسخه 3.4) را به ابتدای متن موجود در قسمت Variable value پنجره‌ جدید وارد و سپس بر روی دکمه‌ OK کلیک نمایید. :)
مسیر Control Panel > System > Advanced system settings > Advanced را طی کرده و سپس با کلیک بر روی Environment Variables پنجره‌ جدیدی باز می‌گردد که در قسمت System variables آن Path را پیدا و انتخاب نمایید. بر روی Edit در پایین همان پنجره کلیک کرده و عبارت زیر (برای نسخه 3.4) را به ابتدای متن موجود در قسمت Variable value پنجره‌ جدید وارد و سپس بر روی دکمه‌ OK کلیک نمایید. :)

::

C:\Python34;C:\Python34\Scripts;


.. image:: /_static/lessons/l02-add-path-on-windows.png
Expand Down Expand Up @@ -352,7 +356,9 @@ pip از زمان انتشار نسخه‌ 3.4 به بسته‌ نصبی پای

برای بروز رسانی خود pip نیز از همین الگو استفاده می‌شود: ``pip install --upgrade pip``

البته در ویندوز می‌بایست از دستور ``python -m pip install -U pip`` استفاده نمایید.
البته در ویندوز می‌بایست از دستور زیر استفاده نمایید::

python -m pip install -U pip

به جای ``upgrade--`` می توانید از ``U-`` نیز استفاده نمایید.

Expand Down
4 changes: 2 additions & 2 deletions source/lessons/l03-create-and-run-a-python-project.rst
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,9 @@

.. admonition:: تمرین

یک اسکریپت پایتون ایجاد کنید که نام و سن شما را تنها با یکبار استفاده از تابع ``()print`` به صورت پایین بر روی خروجی نمایش دهد:
یک اسکریپت پایتون ایجاد کنید که نام و سن شما را تنها با یکبار استفاده از تابع ``()print`` به صورت پایین بر روی خروجی نمایش دهد::

``Name: Hideyoshi Nagachika - Age: 19``
Name: Hideyoshi Nagachika - Age: 19

** حالت‌های مختلفی که می‌توان به این ساختار از خروجی رسید را امتحان نمایید (ورودی‌های متفاوت)

Expand Down
8 changes: 6 additions & 2 deletions source/lessons/l04-python-interactive-mode.rst
Original file line number Diff line number Diff line change
Expand Up @@ -543,11 +543,15 @@

نمونه دستور اجرای اسکریپت:

``python script.py "Hideyoshi Nagachika" 19``
::

python script.py "Hideyoshi Nagachika" 19

نمونه خروجی اسکریپت:

``Name: Hideyoshi Nagachika - Age: 19``
::

Name: Hideyoshi Nagachika - Age: 19


.. _lesson-04-footer:
Expand Down
8 changes: 6 additions & 2 deletions source/lessons/l11-python-standard-library.rst
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,9 @@ os.path
>>>

.. note::
هر مسیر می‌بایست دقیقا شامل یک کاراکتر جدا کننده دایرکتوری (``os.sep``) باشد در غیر این صورت اجزا فقط از آخرین نمونه به بعد در نظر گرفته می‌شوند. این اتفاق در توپِل سوم ``('one', 'two', '/three', 'four/')`` از نمونه کد بالا رخ داده است.
هر مسیر می‌بایست دقیقا شامل یک کاراکتر جدا کننده دایرکتوری (``os.sep``) باشد در غیر این صورت اجزا فقط از آخرین نمونه به بعد در نظر گرفته می‌شوند. این اتفاق در توپِل سوم از نمونه کد بالا رخ داده است::

('one', 'two', '/three', 'four/')


* ``(os.path.expanduser(path``: این تابع تنها یک پارامتر با ترکیب ``user~`` می‌پذیرد و کاراکتر ``~`` را به مسیر دایرکتوری کاربر user در سیستم عامل تبدیل می‌کند [`اسناد پایتون <https://docs.python.org/3/library/os.path.html#os.path.expanduser>`__]::
Expand Down Expand Up @@ -713,7 +715,9 @@ os.path
one\..\one\two\three : one\two\three


* ``(os.path.abspath(path``: مسیر نسبی را نرمال‌سازی کرده و به مسیر مطلق (Absolute - مسیری از ابتدا یا همان روت سیستم فایل - در گنولینوکس: مسیری که با ``/`` شروع شده باشد - در ویندوز: مسیری که با نام یک درایو شروع شده باشد) تبدیل می‌کند. حاصل این تابع برابر با حاصل ``(os.path.normpath(os.path.join(os.getcwd(), path)`` می‌باشد. [`اسناد پایتون <https://docs.python.org/3/library/os.path.html#os.path.abspath>`__]:
* ``(os.path.abspath(path``: مسیر نسبی را نرمال‌سازی کرده و به مسیر مطلق (Absolute - مسیری از ابتدا یا همان روت سیستم فایل - در گنولینوکس: مسیری که با ``/`` شروع شده باشد - در ویندوز: مسیری که با نام یک درایو شروع شده باشد) تبدیل می‌کند. حاصل این تابع برابر با حاصل متد پایین می‌باشد. [`اسناد پایتون <https://docs.python.org/3/library/os.path.html#os.path.abspath>`__]::

(os.path.normpath(os.path.join(os.getcwd(), path)


.. code:: python
Expand Down
4 changes: 3 additions & 1 deletion source/lessons/l12-function-in-python.rst
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,9 @@
>>>

.. tip::
با توضیحات ارائه شده، در یک تابع با سرآیندی همچون ``def f(a, b, /, c, d, *, e, f)`` ارسال آرگومان برای دو پارامتر ``a`` و ``b`` به روش نام=مقدار ممنوع است (positional-only) و ارسال آرگومان برای دو پارامتر ``c`` و ``d`` می‌تواند با استفاده از هر دو روش نام=مقدار یا موقعیت باشد (positional or keyword) و همچنین ارسال آرگومان برای دو پارامتر ``e`` و ``f`` تنها با روش مقدار=نام مجاز خواهد بود (keyword-only).
با توضیحات ارائه شده، در یک تابع با سرآیندی همچون نمونه پایین ارسال آرگومان برای دو پارامتر ``a`` و ``b`` به روش نام=مقدار ممنوع است (positional-only) و ارسال آرگومان برای دو پارامتر ``c`` و ``d`` می‌تواند با استفاده از هر دو روش نام=مقدار یا موقعیت باشد (positional or keyword) و همچنین ارسال آرگومان برای دو پارامتر ``e`` و ``f`` تنها با روش مقدار=نام مجاز خواهد بود (keyword-only)::

def f(a, b, /, c, d, *, e, f)


|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -620,7 +620,11 @@ List Comprehensions

توجه داشته باشید، چنانچه نتیجه اعمال List Comprehensions در هر نوبت شامل بیش از یک عضو باشد، می‌بایست مقادیر نتایج در داخل یک پرانتز قرار داده شوند (به صورت یک شی توپِل - tuple).

به نمونه ``[x,y) for x in a for y in b if x > 0)]`` و خروجی آن توجه نمایید. با توجه به این موضوع عبارت زیر از نظر مفسر پایتون نادرست می‌باشد::
مانند::

[(x,y) for x in a for y in b if x > 0]

با توجه به این موضوع عبارت زیر از نظر مفسر پایتون نادرست می‌باشد::

>>> [x,y for x in a for y in b]
File "<stdin>", line 1
Expand All @@ -638,7 +642,7 @@ List Comprehensions
'before'


اکنون List Comprehensions حوزه خود را دارد. [`توضیحات بیشتر <https://stackoverflow.com/a/4199355/8434370>`__]
اکنون List Comprehensions حوزه خود را دارد، در نتیجه مقدار متغیر خارج از آن بدون تغییر باقی می‌ماند. [`توضیحات بیشتر <https://stackoverflow.com/a/4199355/8434370>`__]



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,11 @@ Function Attributes

function_name.attribute_name = attribute_value

همچنین برای این منظور می‌توان از تابع آماده ``(setattr(object, name, value`` استفاده کرد [`اسناد پایتون <https://docs.python.org/3/library/functions.html#setattr>`__]. این تابع سه آرگومان دریافت می‌کند؛ شی‌ای که می‌خواهید یک Attribute به آن اضافه کنید (در اینجا تابع)، نام (از نوع رشته - string) و مقدار Attribute مورد نظر::
همچنین برای این منظور می‌توان از تابع آماده ``setattr`` استفاده کرد [`اسناد پایتون <https://docs.python.org/3/library/functions.html#setattr>`__]. این تابع سه آرگومان دریافت می‌کند؛ شی‌ای که می‌خواهید یک Attribute به آن اضافه کنید (در اینجا تابع)، نام (از نوع رشته - string) و مقدار Attribute مورد نظر::

setattr(object, name, value)

::

>>> setattr(foo, 'name', 'Saeid')
>>> setattr(foo, 'age', 32)
Expand All @@ -328,7 +332,12 @@ Function Attributes
>>> foo.__dict__
{'is_done': True, 'name': 'Saeid', 'age': 32}

برای دریافت مقدار یک Attribute مشخص می‌توانید از تابع آماده ``([getattr(object, name[, default`` نیز استفاده کرد [`اسناد پایتون <https://docs.python.org/3/library/functions.html#getattr>`__]. این تابع دو پارامتر اجباری (``object`` و ``name``) و یک پارامتر اختیاری (``default``) دارد. در صورتی که شی مورد نظر (در اینجا تابع) فاقد صفت مورد نظر باشد مقدار default (در صورت ارسال) برگردانده خواهد شد::
برای دریافت مقدار یک Attribute مشخص می‌توانید از تابع آماده ``getattr`` نیز استفاده کرد [`اسناد پایتون <https://docs.python.org/3/library/functions.html#getattr>`__]. این تابع دو پارامتر اجباری (``object`` و ``name``) و یک پارامتر اختیاری (``default``) دارد. در صورتی که شی مورد نظر (در اینجا تابع) فاقد صفت مورد نظر باشد مقدار default (در صورت ارسال) برگردانده خواهد شد::


getattr(object, name[, default])

::

>>> getattr(foo, 'is_done')
True
Expand Down Expand Up @@ -402,7 +411,12 @@ eval
>>> eval('math.sin(3.5+x) + 7.2')
6.494459674429608

بر اساس تعریف موجود در اسناد پایتون ``([[eval(object[, globals[, locals``، این تابع شامل دو پارامتر ``globals`` و ``locals`` نیز می‌شود که ارسال آرگومان به آن‌ها اختیاری است. هر دو از نوع دیکشنری (dict) هستند که Scope یا حوزه‌های global و local کدی که باید اجرا شود (پارامتر یکم تابع) را ارايه می‌دهند::
بر اساس تعریف موجود در اسناد پایتون ``eval``، این تابع شامل دو پارامتر ``globals`` و ``locals`` نیز می‌شود که ارسال آرگومان به آن‌ها اختیاری است. هر دو از نوع دیکشنری (dict) هستند که Scope یا حوزه‌های global و local کدی که باید اجرا شود (پارامتر یکم تابع) را ارايه می‌دهند::


eval(object[, globals[, locals]])

::

>>> globals_env = {'x': 7, 'y': 10, 'birds': ['Parrot', 'Swallow', 'Albatross']}
>>> locals_env = {}
Expand Down Expand Up @@ -432,11 +446,6 @@ exec
3
4

.. note::
``exec`` در پایتون نسخه 2x به صورت تابع تعریف نشده است و به صورت یک دستور به کار می‌رود [`اسناد پایتون <https://docs.python.org/2.7/reference/simple_stmts.html#exec>`__]::

>>> exec 'import math; x=2; print(math.sin(3.5+x) + 7.2)'
6.49445967443

این تابع همانند ``eval`` شامل دو پارامتر ``globals`` و ``locals`` نیز می‌شود::

Expand All @@ -449,12 +458,6 @@ exec
Swallow
Albatross

که البته در نسخه‌های 2x از سینتکس ``[[exec code[ in globals[,locals`` پیروی می‌شود::

>>> exec "for b in birds: print b" in globals_env, locals_env
Parrot
Swallow
Albatross


compile
Expand Down
10 changes: 8 additions & 2 deletions source/lessons/l15-regular-expression-in-python.rst
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,9 @@


.. tip::
می‌توان با استفاده از کاراکتر ``|`` در زمان ارسال آرگومان به flags، همزمان چندین مقدار را تنظیم نمود. به مانند: ``re.compile(pattern, re.I | re.M)``
می‌توان با استفاده از کاراکتر ``|`` در زمان ارسال آرگومان به flags، همزمان چندین مقدار را تنظیم نمود. به مانند::

re.compile(pattern, re.I | re.M)


پارامتر flags می‌تواند مقادیر دیگری نیز بپذیرد که برای مطالعه بیشتر می‌توانید به مستندات پایتون مراجعه نمایید.
Expand Down Expand Up @@ -899,7 +901,11 @@
معکوس حالت قبل است. به این معنی که انطباق یک متن منوط به عدم برقرای شرط (انطباق) **قبل** از آن است. آن بخشی از الگو که بعد از این ساختار قرار دارد، تنها زمانی انطباق داده می‌شود که این ساختار منطبق **نباشد**.


* Yes/No Pattern ``(?(id/name)yes-pattern|no-pattern)``
* Yes/No Pattern

::

(?(id/name)yes-pattern|no-pattern)

این ساختار نیز نوعی شرط گذاری است. به این صورت که می‌توان تعیین کرد بر اساس وضعیت انطباق گروه‌بندی‌های موجود (با ذکر نام گروه یا شماره اندیس آن) در الگو، یکی از الگوهای بله (yes-pattern) یا خیر (no-pattern) این ساختار بررسی شود::

Expand Down
Loading