Skip to content

Commit ed68195

Browse files
author
Saeid Darvish
committed
update: add some fetures of python 3.8 log#00115
1 parent 4def56f commit ed68195

5 files changed

Lines changed: 88 additions & 3 deletions

File tree

donate-report.rst

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
مبالغ مهم نیستند، از اقدام و پیام تشویق شما دوستان بسیار سپاسگذارم. (*اطلاعات این صفحه به صورت آنی بروز نمی‌شود!*)
1313

14-
**از ابتدا: 1,621,222 تومان**
14+
**از ابتدا (1395): 1,721,222 تومان**
1515

1616
----
1717

@@ -24,6 +24,14 @@
2424
2525

2626

27+
.. raw:: html
28+
29+
<p id="17e37d" >48: <strong style="color:#5C6BC0">100,000 تومان</strong> در زمان 09:03 02-12-1399<br><q>عالی بود</q></p>
30+
31+
----
32+
33+
34+
2735
.. raw:: html
2836

2937
<p id="cfb1db" >47: <strong style="color:#5C6BC0">10,000 تومان</strong> در زمان 12:25 23-11-1399<br><q>ممنون بایت وقتی که گذاشتین</q></p>

lessons/l06.rst

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,28 @@ Docstring باید به عنوان دستور نخست درج گردد و این
874874

875875

876876

877+
عملگر‌ شیرماهی (Walrus Operator)
878+
------------------------------------------------------------
879+
880+
از نسخه **3.8 پایتون** یک عملگر جدید به نام Assignment Expressions یا Walrus Operator به سینتکس پایتون اضافه شده است. [`PEP 572 <https://www.python.org/dev/peps/pep-0572/>`__]. نمایش این عملگر به شکل ``=:`` (شبیه دو چشم و عاج یک شیرماهی! [`تصویر <https://en.wikipedia.org/wiki/Walrus#/media/File:Pacific_Walrus_-_Bull_(8247646168).jpg>`__]) می‌باشد و به ما این امکان را می‌دهد که عملیات انتساب و بازگرداندن مقدار را به صورت همزمان به انجام برسانیم. به نمونه کد زیر توجه نمایید::
881+
882+
>>> walrus = False
883+
>>> print(walrus)
884+
False
885+
886+
::
887+
888+
>>> print(walrus := True) # Python >= 3.8
889+
True
890+
891+
>>> walrus
892+
True
893+
894+
دو نمونه کد بالا عملکرد یکسانی دارند با این تفاوت که در نمونه دوم تنها با استفاده یک سطر کد، متغیر ``walrus`` با انتساب مقدار ``True`` ایجاد و سپس به تابع ``print`` ارسال می‌گردد.
895+
896+
897+
898+
877899
|
878900

879901
----

lessons/l09.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,15 @@
109109
Jhon
110110
>>>
111111

112+
به مثال دیگری با استفاده از walrus operator (عملگر شیرماهی - درس ششم) و f-string (درس هفتم) توجه نمایید::
113+
114+
>>> # Python >= 3.8
115+
>>> a_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
116+
>>> if (n := len(a_list)) > 5:
117+
... print(f"List is too long ({n} elements, expected <= 5)")
118+
...
119+
List is too long (10 elements, expected <= 5)
120+
112121

113122
.. rubric:: ۲. ساختار همراه با ``else`` (دو انتخابی)
114123

lessons/l12.rst

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -732,8 +732,6 @@
732732
File "<stdin>", line 1
733733
SyntaxError: positional argument follows keyword argument
734734

735-
736-
737735
::
738736

739737
>>> def f(a, *b, c, d=5):
@@ -759,6 +757,24 @@
759757

760758

761759

760+
در بسط این مبحث لازم است اضافه گردد که می‌توان ارسال آرگومان به برخی پارامترهای یک تابع را ملزم به روش **نام=مقدار** کرد. در این شیوه از کاراکتر ``*`` به عنوان یک پارامتر نشانگر استفاده می‌گردد به این صورت که تمامی پارامترهای بعد از آن تنها می‌بایست به صورت **نام=مقدار** مقداردهی شوند. باید توجه داشت که ``*`` در اینجا پارامتر نبوده و تنها نقش یک نشانگر را دارد::
761+
762+
>>> def f(a, *, b, c):
763+
... print(a, b, c)
764+
...
765+
>>> f(1, b=2, c=3)
766+
1 2 3
767+
768+
>>> f(1, 2, c=3)
769+
Traceback (most recent call last):
770+
File "<stdin>", line 1, in <module>
771+
TypeError: f() takes 1 positional argument but 2 positional arguments (and 1 keyword-only argument) were given
772+
773+
>>> f(1, 2, 3)
774+
Traceback (most recent call last):
775+
File "<stdin>", line 1, in <module>
776+
TypeError: f() takes 1 positional argument but 3 were given
777+
762778

763779

764780

@@ -810,9 +826,26 @@
810826
7 14 () {'d': 28, 'c': 21}
811827

812828

829+
* Positional-Only Parameters [`PEP 570 <https://www.python.org/dev/peps/pep-0570/>`_]
813830

831+
از **نسخه 3.8 پایتون** سینتکس جدیدی به پایتون اضافه گردیده است که این امکان را به ما می‌دهد تا بتوانیم تعدادی پارامتر را در تعریف یک تابع مجبور به ارسال آرگومان متناظر آن‌ها بر اساس موقعیت نماییم و به بیانی دیگر امکان ارسال آرگومان به روش **نام=مقدار** را برای آن‌ها غیرفعال سازیم. این سینتکس در مواقعی که نام پارامترها در آینده ممکن است دستخوش تغییر شوند، مفید خواهد بود زیرا در این حالت بخش‌های دیگری از کد برنامه نیاز به تغییر نخواهد داشت.
814832

833+
در این سینتکس کافی است در تعریف پارامترهای تابع، پس از نام پارامترهای مورد نظر خود از کاراکتر ``/`` به عنوان یک پارامتر نشانگر استفاده نماییم. در این صورت ارسال آرگومان به روش نام=مقدار برای تمامی پارامترهای پیش از ``/`` ممنوع می‌گردد. باید توجه داشت که ``/`` در اینجا پارامتر نبوده و تنها نقش یک نشانگر را دارد::
834+
835+
>>> def f(a, /):
836+
... print(a)
837+
...
838+
>>> f(3)
839+
3
840+
841+
>>> f(a=3)
842+
Traceback (most recent call last):
843+
File "<stdin>", line 1, in <module>
844+
TypeError: f() got some positional-only arguments passed as keyword arguments: 'a'
845+
>>>
815846

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

817850

818851
|

log.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,19 @@
99
گزارش توسعه
1010
=============
1111

12+
.. raw:: html
13+
14+
<p class="rubric" id="00115" ><a class="reference external" href="#00115">00115</a> - شنبه ۲ اسفند ۱۳۹۹</p>
15+
16+
* بروزرسانی - ویژگی **پایتون 3.8:** مبحث Walrus Operator به درس ششم اضافه گردید.
17+
* بروزرسانی - ویژگی **پایتون 3.8:** مبحث Positional-Only Parameters به درس دوازدهم اضافه گردید.
18+
* گزارش حمایت مالی بروز گردید.
19+
20+
----
21+
22+
23+
24+
1225
.. raw:: html
1326

1427
<p class="rubric" id="00114" ><a class="reference external" href="#00114">00114</a> - جمعه ۱ اسفند ۱۳۹۹</p>

0 commit comments

Comments
 (0)