You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: source/lessons/l06-python-syntax.rst
+28Lines changed: 28 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -580,6 +580,34 @@ Docstring باید به عنوان دستور نخست درج گردد و این
580
580
.. tip::
581
581
[`PEP 8 <http://www.python.org/dev/peps/pep-0008>`_]: برای نامگذاری ثابتها (Constants) تنها از حروف بزرگ و برای جداسازی کلمهها نیز از ``ـ`` استفاده شود. مانند: MAX_OVERFLOW ،TOTAL و...
582
582
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
+
این شی کاربردهای فراوانی دارد که به مرور با آنها آشنا خواهید شد.
* ``()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>`__] تمام کلیدهای موجود در شی را بر میگرداند::
356
356
357
-
>>> # Python 3.x
358
-
359
357
>>> d = {1:'One', 2:'Two', 3:'Three'}
360
358
361
359
>>> d.items()
@@ -367,48 +365,6 @@
367
365
>>> d.keys()
368
366
dict_keys([1, 2, 3])
369
367
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>`__] پورت شده است::
* ``()clear`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#dict.clear>`__] - تمام عضوهای یک شی دیکشنری را حذف میکند::
414
370
@@ -563,20 +519,7 @@
563
519
564
520
هیچ سینتکس خاصی برای ایجاد یا بیان یک شی خالی از نوع مجموعه وجود ندارد و تنها میبایست از کلاس ``()set`` - بدون آرگومان - استفاده کرد. توجه داشته باشید که ``{}`` بیانگر یک شی دیکشنری خالی است و نه یک مجموعه خالی::
565
521
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 = {}
580
523
>>> type(a)
581
524
<class 'dict'>
582
525
@@ -595,46 +538,48 @@
595
538
5
596
539
597
540
541
+
.. _python-set-operators:
598
542
599
-
.. rubric:: عملگرها برای مجموعه
543
+
عملگرها برای مجموعه
544
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
600
545
601
546
تعدادی از عملگرها هستند که برای اشیا مجموعه تعریف خاصی پیدا میکنند؛ در حالی که در مورد اشیا دیگر چنین رفتاری ندارند. این عملگرها در واقع پیادهسازی تعریف مشخصی در مفهوم ریاضی مجموعهها هستند:
602
547
603
-
* ``|`` اجتماع (Union): مانند ``A | B`` که حاصل آن مجموعهای میباشد که تمام عضوهای مجموعه ``A`` و مجموعه ``B`` را داشته باشد و هیچ عضو اضافه دیگری نداشته باشد.
548
+
* ``|`` اجتماع (Union): مانند ``A | B`` که حاصل آن مجموعهای میباشد که تمام عضوهای مجموعه ``A`` و مجموعه ``B`` را داشته باشد و هیچ عضو اضافه دیگری نداشته باشد::
* ``&`` اشتراک (Intersection): مانند ``A & B`` که حاصل آن مجموعهای میباشد که تنها شامل عضوهایی است که هم در مجموعه ``A`` هستند و هم در مجموعه ``B``::
609
557
610
558
>>> A & B
611
-
{'w', 'v', 'u'}
559
+
{'v', 'u', 'w'}
612
560
613
561
614
562
* ``-`` تفاضل (Difference): مانند ``A - B`` که حاصل آن مجموعهای میباشد که تنها شامل عضوهایی از مجموعه ``A`` است كه در مجموعه ``B`` نيستند::
615
563
616
-
>>> A = {'u', 'v', 'w', 'x', 'y', 'z'}
617
-
>>> B = {'q', 'r', 's', 't', 'u', 'v', 'w',}
618
-
619
564
>>> A - B
620
-
{'z', 'y', 'x'}
565
+
{'y', 'z', 'x'}
621
566
622
567
623
568
* ``^`` تفاضل متقارن (Symmetric difference): مانند ``A ^ B`` که حاصل آن مجموعهای میباشد که برابر اجتماع ِ تفاضل ``A`` از ``B`` و تفاضل ``B`` از ``A`` میباشد یعنی: ``(A-B) | (B-A)``::
624
569
625
570
>>> A ^ B
626
-
{'q', 'y', 't', 'r', 'z', 's', 'x'}
571
+
{'y', 'z', 's', 'q', 'x', 'r', 't'}
627
572
628
573
::
629
574
630
575
>>> (A-B) | (B-A)
631
-
{'y', 'q', 't', 'r', 'z', 'x', 's'}
576
+
{'y', 'r', 'z', 't', 's', 'x', 'q'}
632
577
633
578
634
579
تفاضل متقارن را میتوان به صورت پایین نیز تعریف کرد::
635
580
636
581
>>> (A|B) - (B&A)
637
-
{'y', 'q', 't', 'r', 'z', 's', 'x'}
582
+
{'y', 'x', 'r', 'z', 't', 's', 'q'}
638
583
639
584
* ``>`` زیرمجموعه (Subset): مانند ``A < B`` که اگر مجموعه ``A`` زیرمجموعهای از مجموعه ``B`` باشد مقدار ``True`` را برمیگرداند. در مقابل عملگر ``<`` قرار دارد که برای مثال در عبارت ``A > B`` اگر مجموعه ``A`` یک Superset برای مجموعه ``B`` باشد مقدار ``True`` را برمیگرداند::
* ``()union`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#set.union>`__] - تعدادی شی مجموعه را دریافت میکند و یک مجموعه جدید که برابر اجتماع شی مورد نظر با آنها است را برمیگرداند::
@@ -745,25 +694,12 @@
745
694
KeyError: 'pop from an empty set'
746
695
747
696
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:
759
698
760
-
>>> type(A)
761
-
<type 'frozenset'>
699
+
frozenset
700
+
~~~~~~~~~~~~~
762
701
763
-
>>> A
764
-
frozenset([1, 2, 3])
765
-
766
-
*نسخههای 3x:*
702
+
همانطور که پیش از این بیان شد مجموعه یک شی «تغییر پذیر» است با عضوهای «تغییر ناپذیر» و به دلیل همین تغییر پذیری است که میتوانیم به سادگی توسط متدهایش، عضوی به آن افزوده یا حذف نماییم. **”frozenset“** یک نوع جدید مجموعه است. همانگونه که میتوانیم یک شی تاپل را معادل یک شی لیست تغییر ناپذیر تصویر کنیم؛ frozenset را نیز میتوان **یک شی مجموعه تغییر ناپذیر** تصور کرد. نوع ``frozenset`` همان نوع ``set`` است، با تمام ویژگیهای آن به غیر از تغییر پذیری که با استفاده از کلاس ``()frozenset`` ایجاد میگردد:
این نوع شی فاقد مقدار است و با انتساب ثابت ``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
-
810
722
دستهبندی
811
723
-----------
812
724
813
-
در این بخش به دستهبندی انواع شی بر اساس برخی از تعریفهای پایتون پرداخته شده است.
725
+
اکنون با انواع داده و نیز ساختمانهای داده متداول در پایتون آشنا شدهاید. در این بخش به منظور جمعبندی، به دستهبندی این اشیا خواهیم پرداخت:
814
726
815
727
816
728
* انواع عددی (Numeric Types):
@@ -819,7 +731,6 @@ NoneType
819
731
:linenos:
820
732
821
733
- int
822
-
- long (2.x)
823
734
- float
824
735
- complex
825
736
- Decimal
@@ -832,9 +743,8 @@ NoneType
832
743
:linenos:
833
744
834
745
- str
835
-
- unicode (2.x)
836
-
- bytes (3.x)
837
-
- bytearray (3.x/2.6+)
746
+
- bytes
747
+
- bytearray
838
748
- tuple
839
749
- list
840
750
@@ -844,15 +754,13 @@ NoneType
844
754
:linenos:
845
755
846
756
- int
847
-
- long (2.x)
848
757
- float
849
758
- complex
850
759
- Decimal
851
760
- Fraction
852
761
- bool
853
762
- str
854
-
- unicode (2.x)
855
-
- bytes (3.x)
763
+
- bytes
856
764
- tuple
857
765
- frozenset
858
766
@@ -862,7 +770,7 @@ NoneType
862
770
.. code-block:: html
863
771
:linenos:
864
772
865
-
- bytearray (3.x/2.6+)
773
+
- bytearray
866
774
- list
867
775
- dict
868
776
- set
@@ -889,10 +797,8 @@ NoneType
889
797
:linenos:
890
798
891
799
- zip
892
-
- dict_views
893
800
- NoneType
894
801
895
-
*در درسهای بعد نیز با انواع آماده (Built-in) دیگری آشنا خواهیم شد.*
0 commit comments