Skip to content

Commit 35d1fbc

Browse files
author
Saeid Darvish
committed
edited l08.2 - completed
1 parent e3efcaa commit 35d1fbc

File tree

2 files changed

+56
-122
lines changed

2 files changed

+56
-122
lines changed

source/lessons/l06-python-syntax.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,34 @@ Docstring باید به عنوان دستور نخست درج گردد و این
580580
.. tip::
581581
[`PEP 8 <http://www.python.org/dev/peps/pep-0008>`_]: برای نام‌گذاری ثابت‌ها (Constants) تنها از حروف بزرگ و برای جداسازی کلمه‌ها نیز از ``ـ`` استفاده شود. مانند: MAX_OVERFLOW ،TOTAL و...
582582

583+
.. _python-none:
584+
585+
NoneType
586+
----------
587+
588+
[`None <http://docs.python.org/3/library/constants.html#None>`_] یک شی آماده و بدون مقدار در پایتون است::
589+
590+
>>> n = None
591+
592+
>>> type(n)
593+
<class 'NoneType'>
594+
595+
>>> print(n)
596+
None
597+
598+
>>> import sys
599+
>>> sys.getsizeof(a)
600+
16
601+
602+
>>> n = 5
603+
>>> type(n)
604+
<class 'int'>
605+
606+
این شی را می‌توان معرف مقدار هیچی یا ``null`` در پایتون نیز در نظر گرفت. یک کاربرد مهم از این شی در زمانی است که می‌خواهیم یک متغیر بدون مقدار اولیه ایجاد و مقداردهی را بر اساس شرایطی دیگر در ادامه برنامه تعریف نماییم.
607+
608+
این شی کاربردهای فراوانی دارد که به مرور با آن‌ها آشنا خواهید شد.
609+
610+
583611
.. _python-operators:
584612

585613
عملگر‌ها

source/lessons/l08-set-and-dict-in-python.rst

Lines changed: 28 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,6 @@
354354

355355
* ``()items`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#dict.items>`__] تمام عضوهای شی را برمی‌گرداند - ``()values`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#dict.values>`__] تمام مقدارهای موجود در شی را بر می‌گرداند - ``()keys`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#dict.keys>`__] تمام کلیدهای موجود در شی را بر می‌گرداند::
356356

357-
>>> # Python 3.x
358-
359357
>>> d = {1:'One', 2:'Two', 3:'Three'}
360358

361359
>>> d.items()
@@ -367,48 +365,6 @@
367365
>>> d.keys()
368366
dict_keys([1, 2, 3])
369367

370-
توجه داشته باشید که در نسخه‌های 3x پایتون خروجی این متدها از نوع متفاوتی است که با استفاده از ``()type`` می‌توانید مشاهده کنید؛ این نوع ``dict_view`` نامیده می‌شود [`اسناد پایتون 3x <http://docs.python.org/3/library/stdtypes.html#dict-views>`__]. این متدها یک کپی از داده‌های مورد نظر (عضوها یا مقدارها یا کلیدها) را بر نمی‌گردانند بلکه می‌توان گفت پنجره‌ای برای مشاهده آنچه که هست باز می‌کنند و در هر زمان که این داده‌ها تغییر کنند این خروجی‌ها نیز تغییر می‌کنند. برای مشاهده بهتر این خروجی‌ها می‌توانید آن‌ها را به نوع لیست تبدیل نمایید::
371-
372-
>>> list(d.items())
373-
[(1, 'One'), (2, 'Two'), (3, 'Three')]
374-
375-
>>> list(d.values())
376-
['One', 'Two', 'Three']
377-
378-
>>> list(d.keys())
379-
[1, 2, 3]
380-
381-
این متدها در پایتون 2x چنین خروجی ندارند و تنها یکی کپی از داده‌ها را برمی‌گردانند. البته در نسخه 2.7 متدهای معادلی با عنوان‌های ``()viewitems`` [`اسناد پایتون <http://docs.python.org/2/library/stdtypes.html#dict.viewitems>`__] و ``()viewvalues`` [`اسناد پایتون <http://docs.python.org/2/library/stdtypes.html#dict.viewvalues>`__] و ``()viewkeys`` [`اسناد پایتون <http://docs.python.org/2/library/stdtypes.html#dict.viewkeys>`__] پورت شده است::
382-
383-
>>> # Python 2.7
384-
385-
>>> d = {1:'One', 2:'Two', 3:'Three'}
386-
387-
>>> d.viewitems()
388-
dict_items([(1, 'One'), (2, 'Two'), (3, 'Three')])
389-
390-
>>> d.viewvalues()
391-
dict_values(['One', 'Two', 'Three'])
392-
393-
>>> d.viewkeys()
394-
dict_keys([1, 2, 3])
395-
396-
::
397-
398-
>>> # Python 2.x
399-
400-
>>> d = {1:'One', 2:'Two', 3:'Three'}
401-
402-
>>> d.items()
403-
[(1, 'One'), (2, 'Two'), (3, 'Three')]
404-
405-
>>> d.values()
406-
['One', 'Two', 'Three']
407-
408-
>>> d.keys()
409-
[1, 2, 3]
410-
411-
412368

413369
* ``()clear`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#dict.clear>`__] - تمام عضوهای یک شی دیکشنری را حذف می‌کند::
414370

@@ -563,20 +519,7 @@
563519

564520
هیچ سینتکس خاصی برای ایجاد یا بیان یک شی خالی از نوع مجموعه وجود ندارد و تنها می‌بایست از کلاس ``()set`` - بدون آرگومان - استفاده کرد. توجه داشته باشید که ``{}`` بیانگر یک شی دیکشنری خالی است و نه یک مجموعه خالی::
565521

566-
>>> a = {} # Python 2.x
567-
>>> type(a)
568-
<type 'dict'>
569-
570-
>>> b = set()
571-
>>> type(b)
572-
<type 'set'>
573-
574-
>>> b
575-
set([])
576-
577-
::
578-
579-
>>> a = {} # Python 3.x
522+
>>> a = {}
580523
>>> type(a)
581524
<class 'dict'>
582525

@@ -595,46 +538,48 @@
595538
5
596539

597540

541+
.. _python-set-operators:
598542

599-
.. rubric:: عملگرها برای مجموعه
543+
عملگرها برای مجموعه
544+
~~~~~~~~~~~~~~~~~~~~~~~~~~
600545

601546
تعدادی از عملگرها هستند که برای اشیا مجموعه تعریف خاصی پیدا می‌کنند؛ در حالی که در مورد اشیا دیگر چنین رفتاری ندارند. این عملگرها در واقع پیاده‌سازی تعریف مشخصی در مفهوم ریاضی مجموعه‌ها هستند:
602547

603-
* ``|`` اجتماع (Union): مانند ``A | B`` که حاصل آن مجموعه‌ای می‌باشد که تمام عضوهای مجموعه ``A`` و مجموعه ``B`` را داشته باشد و هیچ عضو اضافه دیگری نداشته باشد.
548+
* ``|`` اجتماع (Union): مانند ``A | B`` که حاصل آن مجموعه‌ای می‌باشد که تمام عضوهای مجموعه ``A`` و مجموعه ``B`` را داشته باشد و هیچ عضو اضافه دیگری نداشته باشد::
549+
550+
>>> A = {'u', 'v', 'w', 'x', 'y', 'z'}
551+
>>> B = {'q', 'r', 's', 't', 'u', 'v', 'w'}
604552

605553
>>> A | B
606-
{'w', 'y', 'q', 't', 'r', 'z', 's', 'v', 'u', 'x'}
554+
{'y', 's', 'x', 'u', 'r', 'z', 't', 'w', 'v', 'q'}
607555

608556
* ``&`` اشتراک (Intersection): مانند ``A & B`` که حاصل آن مجموعه‌ای می‌باشد که تنها شامل عضوهایی است که هم در مجموعه ``A`` هستند و هم در مجموعه ``B``::
609557

610558
>>> A & B
611-
{'w', 'v', 'u'}
559+
{'v', 'u', 'w'}
612560

613561

614562
* ``-`` تفاضل (Difference): مانند ``A - B`` که حاصل آن مجموعه‌ای می‌باشد که تنها شامل عضوهایی از مجموعه ``A`` است كه در مجموعه ``B`` نيستند::
615563

616-
>>> A = {'u', 'v', 'w', 'x', 'y', 'z'}
617-
>>> B = {'q', 'r', 's', 't', 'u', 'v', 'w',}
618-
619564
>>> A - B
620-
{'z', 'y', 'x'}
565+
{'y', 'z', 'x'}
621566

622567

623568
* ``^`` تفاضل متقارن (Symmetric difference): مانند ``A ^ B`` که حاصل آن مجموعه‌ای می‌باشد که برابر اجتماع ِ تفاضل ``A`` از ``B`` و تفاضل ``B`` از ``A`` می‌باشد یعنی: ``(A-B) | (B-A)``::
624569

625570
>>> A ^ B
626-
{'q', 'y', 't', 'r', 'z', 's', 'x'}
571+
{'y', 'z', 's', 'q', 'x', 'r', 't'}
627572

628573
::
629574

630575
>>> (A-B) | (B-A)
631-
{'y', 'q', 't', 'r', 'z', 'x', 's'}
576+
{'y', 'r', 'z', 't', 's', 'x', 'q'}
632577

633578

634579
تفاضل متقارن را می‌توان به صورت پایین نیز تعریف کرد::
635580

636581
>>> (A|B) - (B&A)
637-
{'y', 'q', 't', 'r', 'z', 's', 'x'}
582+
{'y', 'x', 'r', 'z', 't', 's', 'q'}
638583

639584
* ``>`` زیرمجموعه (Subset): مانند ``A < B`` که اگر مجموعه ``A`` زیرمجموعه‌ای از مجموعه ``B`` باشد مقدار ``True`` را برمی‌گرداند. در مقابل عملگر ``<`` قرار دارد که برای مثال در عبارت ``A > B`` اگر مجموعه ``A`` یک Superset برای مجموعه ``B`` باشد مقدار ``True`` را برمی‌گرداند::
640585

@@ -672,7 +617,11 @@
672617
>>> A is C
673618
True
674619

675-
.. rubric:: برخی از متدهای کاربردی یک شی مجموعه
620+
621+
.. _python-set-methods:
622+
623+
برخی از متدهای کاربردی یک شی مجموعه
624+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
676625

677626

678627
* ``()union`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#set.union>`__] - تعدادی شی مجموعه را دریافت می‌کند و یک مجموعه جدید که برابر اجتماع شی مورد نظر با آن‌ها است را برمی‌گرداند::
@@ -745,25 +694,12 @@
745694
KeyError: 'pop from an empty set'
746695

747696

748-
.. rubric:: frozenset
749-
750-
همانطور که پیش از این بیان شد مجموعه یک شی «تغییر پذیر» است با عضوهای «تغییر ناپذیر» و به دلیل همین تغییر پذیری است که می‌توانیم به سادگی توسط متدها عضوی به آن افزوده یا حذف نماییم. **”frozenset“** یک نوع جدید مجموعه است. همانگونه که می‌توانیم یک شی تاپل را معادل یک شی لیست تغییر ناپذیر تصویر کنیم؛ frozenset را نیز می‌توان **یک شی مجموعه تغییر ناپذیر** تصور کرد. نوع ``frozenset`` همان نوع ``set`` است، با تمام ویژگی‌های آن به غیر از تغییر پذیری که با استفاده از کلاس ``()frozenset`` ایجاد می‌گردد:
751-
752-
*نسخه‌های 2x:*
753-
754-
::
755-
756-
>>> L = [1, 2, 3]
757-
758-
>>> A = frozenset(L)
697+
.. _python-frozenset:
759698

760-
>>> type(A)
761-
<type 'frozenset'>
699+
frozenset
700+
~~~~~~~~~~~~~
762701

763-
>>> A
764-
frozenset([1, 2, 3])
765-
766-
*نسخه‌های 3x:*
702+
همانطور که پیش از این بیان شد مجموعه یک شی «تغییر پذیر» است با عضوهای «تغییر ناپذیر» و به دلیل همین تغییر پذیری است که می‌توانیم به سادگی توسط متدهایش، عضوی به آن افزوده یا حذف نماییم. **”frozenset“** یک نوع جدید مجموعه است. همانگونه که می‌توانیم یک شی تاپل را معادل یک شی لیست تغییر ناپذیر تصویر کنیم؛ frozenset را نیز می‌توان **یک شی مجموعه تغییر ناپذیر** تصور کرد. نوع ``frozenset`` همان نوع ``set`` است، با تمام ویژگی‌های آن به غیر از تغییر پذیری که با استفاده از کلاس ``()frozenset`` ایجاد می‌گردد:
767703

768704
::
769705

@@ -783,34 +719,10 @@
783719
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']
784720

785721

786-
NoneType
787-
----------
788-
789-
این نوع شی فاقد مقدار است و با انتساب ثابت ``None`` [`اسناد پایتون <http://docs.python.org/3/library/constants.html#None>`__] به یک نام ایجاد می‌گردد::
790-
791-
>>> n = None
792-
793-
>>> type(n)
794-
<class 'NoneType'>
795-
796-
>>> print(n)
797-
None
798-
799-
>>> import sys
800-
>>> sys.getsizeof(a)
801-
16
802-
803-
>>> n = 5
804-
>>> type(n)
805-
<class 'int'>
806-
807-
``None`` در پایتون 3x جزو کلمه‌های کلیدی (keywords) تعریف شده است.
808-
809-
810722
دسته‌بندی
811723
-----------
812724

813-
در این بخش به دسته‌بندی انواع شی بر اساس برخی از تعریف‌های پایتون پرداخته شده است.
725+
اکنون با انواع داده و نیز ساختمان‌های داده متداول در پایتون آشنا شده‌اید. در این بخش به منظور جمع‌بندی، به دسته‌بندی این اشیا خواهیم پرداخت:
814726

815727

816728
* انواع عددی (Numeric Types):
@@ -819,7 +731,6 @@ NoneType
819731
:linenos:
820732

821733
- int
822-
- long (2.x)
823734
- float
824735
- complex
825736
- Decimal
@@ -832,9 +743,8 @@ NoneType
832743
:linenos:
833744

834745
- str
835-
- unicode (2.x)
836-
- bytes (3.x)
837-
- bytearray (3.x/2.6+)
746+
- bytes
747+
- bytearray
838748
- tuple
839749
- list
840750

@@ -844,15 +754,13 @@ NoneType
844754
:linenos:
845755

846756
- int
847-
- long (2.x)
848757
- float
849758
- complex
850759
- Decimal
851760
- Fraction
852761
- bool
853762
- str
854-
- unicode (2.x)
855-
- bytes (3.x)
763+
- bytes
856764
- tuple
857765
- frozenset
858766

@@ -862,7 +770,7 @@ NoneType
862770
.. code-block:: html
863771
:linenos:
864772

865-
- bytearray (3.x/2.6+)
773+
- bytearray
866774
- list
867775
- dict
868776
- set
@@ -889,10 +797,8 @@ NoneType
889797
:linenos:
890798

891799
- zip
892-
- dict_views
893800
- NoneType
894801

895-
*در درس‌های بعد نیز با انواع آماده (Built-in) دیگری آشنا خواهیم شد.*
896802

897803
|
898804

0 commit comments

Comments
 (0)