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
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@
18
18
19
19
Photo by `Tim J <https://unsplash.com/photos/gM6k0JmHIBE>`__
20
20
21
-
در این درس به معرفی اجزای پایه در زبان برنامهنویسی پایتون پرداخته شده و اینکه چه هستند، چه گرامری دارند، چه کاری انجام میدهند یا... مورد بررسی قرار گرفته است. همچنین در موارد بسیاری نکتههایی از شیوه استاندارد پایتوننویسی که توسط سند `PEP 8 <http://www.python.org/dev/peps/pep-0008>`__ به برنامهنویسان پایتون پیشنهاد میشود نیز آورده شده است؛ رعایت این اصول به یکدستی کدهای جامعه پایتون کمک میکند.
21
+
در این درس به معرفی اجزای پایه در زبان برنامهنویسی پایتون پرداخته شده و اینکه چه هستند، چه گرامری دارند، چه کاری انجام میدهند یا... مورد بررسی قرار گرفته است. همچنین در موارد بسیاری نکتههایی از شیوه استاندارد پایتوننویسی که توسط سند `PEP 8 <http://www.python.org/dev/peps/pep-0008>`__ به برنامهنویسان پایتون پیشنهاد میشود نیز آورده شده است؛ رعایت این اصول به یکدستی کدهای جامعه پایتون کمک میکند. [#f1]_
22
22
23
23
سینتکس (`Syntax <http://en.wikipedia.org/wiki/Syntax_(programming_languages)>`_) مجموعهای از قواعد است که چگونگی برنامهنویسی به یک زبان مشخص را تعریف میکند؛ برای نمونه اینکه یک متن چطور نوشته شود که توسط مفسر پایتون به عنوان توضیح در نظر گرفته شود یا یک شی رشته، به رعایت سینتکس تعریف شده در پایتون بستگی دارد و چنانچه مفسر نتواند متن را با هیچ قاعده تعریف شدهای مطابقت دهد یک استثنا گزارش خواهد شد. سینتکس پایتون تنها محدود به این درس نیست و موارد بسیار دیگری به مانند چگونگی تعریف اشیا گوناگون را در طی درسهای آتی مشاهده خواهید کرد.
24
24
@@ -945,6 +945,12 @@ NoneType
945
945
True
946
946
947
947
948
+
.. _lesson-06-footer:
949
+
950
+
پینوشت
951
+
--------
952
+
953
+
.. [#f1] پروژهای متنباز به منظور ترجمه PEP8 به فارسی نیز راهاندازی شده است. برای مطالعه میتوانید به نشانی [`شیوهنامه نگارش پایتون (PEP 8 فارسی) <https://pep8.ir>`_] مراجعه نمایید.
Copy file name to clipboardExpand all lines: source/lessons/l07-string-and-bytes-in-python.rst
+36-29Lines changed: 36 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
.. role:: emoji-size
2
2
3
3
.. meta::
4
-
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامهنویسی پایتون - درس هفتم: انواع داده در پایتون، رشته
4
+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامهنویسی پایتون - درس هفتم: انواع داده در پایتون، str و bytes
5
5
:keywords: آموزش نوع داده رشته یا string در پایتون (str)، آموزش پایتون, آموزش برنامه نویسی, پایتون, انواع شی, انواع داده, انواع شی در پایتون, انواع داده در پایتون, رشتهها در پایتون, قالب بندی رشته, توابع رشته در پایتون
پایتون هر «نوع داده» (Data Type) را توسط یک کلاس ارایه میدهد؛ بنابراین هر داده یک نمونه یا یک شی از کلاسی مشخص است. هر چند برنامهنویس نیز میتواند با تعریف کلاس، نوع دلخواه خود را داشته باشد ولی در این درس میخواهیم درباره آن بخشی از انواع داده یا انواع شیای که به شکل آماده (Built-in) در اختیار مفسر زبان پایتون قرار داده شده است صحبت کنیم.
22
22
23
-
در ادامه شرح «انواع عددی» در پایتون، این بخش به بررسی نوع «رشته» (String) در پایتون خواهد پرداخت.
23
+
در ادامه شرح «انواع عددی» در پایتون، این بخش به بررسی کامل نوع داده «رشته» (String) و همچنین نوع داده باینری (Binary) در پایتون خواهد پرداخت.
24
24
25
25
با اینکه تلاش شده است جزییات کامل باشند ولی در برخی بخشها مطالعه اسناد رسمی پایتون میتواند اطلاعات کاملتری را در اختیار شما قرار دهد. در مواقع بسیاری از تابعهای آماده پایتون استفاده خواهد شد که ممکن است جزییاتی بیشتر از آنچه در این درس بیان میشود را داشته باشند؛ به همین دلیل لینک تعریف آنها در اسناد پایتون نیز ارایه گشته است. نکته مهم در مطالعه این درس بررسی نمونه کدهاست که گاهی درک توضیحی که داده شده است بدون دقت در این نمونه کدها ناممکن خواهد بود.
26
26
@@ -37,8 +37,8 @@
37
37
38
38
.. _python-string:
39
39
40
-
نوع رشته
41
-
-----------
40
+
نوع رشته (str)
41
+
---------------
42
42
43
43
44
44
نوع «رشته» (String) در پایتون با قرار گرفتن دنبالهای از کاراکترها درون یک جفت نماد نقل قول (Quotation) تکی ``' '`` یا دو تایی ``" "`` ایجاد میشود؛ به مانند ``"Python Strings"`` یا ``'Python Strings'`` که تفاوتی با یکدیگر از نظر نوع ندارند::
@@ -117,7 +117,7 @@
117
117
.. _python-string-sequence:
118
118
119
119
رشته به عنوان دنباله (Sequence)
120
-
----------------------------------
120
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
121
121
122
122
برخی از انواع شی پایتون به مانند رشته، توپِل (tuple)، لیست (list) و... با عنوان **دنباله** (Sequence) نیز شناخته میشوند. دنباله ویژگیهایی دارد که در اینجا به کمک نوع رشته بررسی خواهیم کرد. رشته در واقع یک **دنباله** از کاراکترهاست در نتیجه میتوان هر یک از اعضای این دنباله را با استفاده از اندیس (Index) موقعیت آن، دستیابی نمود؛ اندیس اعضا از سمت چپ با عدد صفر شروع و به سمت راست یک واحد یک واحد افزایش مییابد. به عنوان نمونه برای شی ``'Python Strings'`` میتوانیم شمای اندیسگذاری را به صورت پایین در نظر بگیریم::
123
123
@@ -198,7 +198,7 @@
198
198
.. _python-string-operators:
199
199
200
200
عملگرها برای رشته
201
-
------------------------
201
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
202
202
203
203
با رشتهها نیز میتوان از عملگرهای ``+`` (برای پیوند رشتهها) و ``*`` (برای تکرار رشتهها) بهره برد::
204
204
@@ -250,7 +250,7 @@
250
250
.. _python-escape-characters:
251
251
252
252
کاراکترهای Escape
253
-
---------------------
253
+
~~~~~~~~~~~~~~~~~~~~~~~~~
254
254
255
255
به صورت پیشفرض تعدادی کاراکتر خاص تعریف شده است که میتوان آنها را درون رشتهها بکار برد. تمام این کاراکترها با یک ``\`` آغاز میشوند به همین دلیل گاهی نیز به نام Backslash Characters خوانده میشوند [`ویکیپدیا <https://en.wikipedia.org/wiki/Escape_character>`__]. در واقع این کاراکترها امکانی برای درج برخی دیگر از کاراکترها هستند که نمیتوان آنها را به سادگی توسط صفحهکلید وارد کرد. برای نمونه یکی از کاراکترهای Escape رایج ``n\`` است که بیانگر کاراکتری با کد اسکی 10 (LF) به نام newline میباشد؛ ``n\`` در هر جایی از رشته (یا متن) که درج گردد در هنگام چاپ سطر جاری را پایان میدهد و ادامه رشته (یا متن) از سطر جدید آغاز میشود::
256
256
@@ -295,7 +295,7 @@
295
295
.. _python-character-code:
296
296
297
297
تبدیل کد به کاراکتر و برعکس
298
-
------------------------------
298
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
299
299
300
300
میدانیم برای اینکه کامپیوتر بتواند کاراکترها را درک کند نیاز به سیستمهایی است که آنها را برای تبدیل به کدهای پایه دو کدگذاری کند؛ به مانند سیستم اَسکی (ASCII) یا سیستمهای جامعتری مانند UTF-8 که تحت استاندارد یونیکد (Unicode) در دسترس است. گاهی نیاز است به این کدها دسترسی داشته باشیم و با کاراکترها بر اساس آنها کار کنیم؛ برای این منظور در پایتون میتوان از دو تابع ``()ord`` (تبدیل کد به کاراکتر) [`اسناد پایتون <http://docs.python.org/library/functions.html#ord>`__] و ``()chr`` (تبدیل کاراکتر به کد) [`اسناد پایتون <http://docs.python.org/library/functions.html#chr>`__] استفاده کرد. تابع ``()ord`` یک رشته تک کاراکتری را گرفته و یک عدد (در پایه ده) که بیانگر کد کاراکتر مورد نظر میباشد را برمیگرداند. تابع ``()chr`` نیز کد کاراکتری (که میبایست عددی در پایه ده باشد) را گرفته و کاراکتر مربوط به آن را برمیگرداند::
301
301
@@ -322,7 +322,7 @@
322
322
.. _python-convert-to-string:
323
323
324
324
تبدیل به نوع رشته
325
-
-----------------------
325
+
~~~~~~~~~~~~~~~~~~~~~
326
326
327
327
برای تبدیل اشیایی از نوع دیگر به نوع رشته؛ کلاس ``()str`` [`اسناد پایتون <http://docs.python.org/library/functions.html#func-str>`__] و تابع ``()repr`` [`اسناد پایتون <http://docs.python.org/library/functions.html#repr>`__] وجود دارد. کلاس ``()str`` یک نمونه غیر رسمی (informal) از نوع شی رشته را برمیگرداند؛ غیر رسمی از این جهت که توسط آن جزییات شی رشته پنهان میشود. اما تابع ``()repr`` یک نمونه رسمی (official) از نوع رشته پایتون را برمیگرداند. کمی قبلتر راجب تفاوت خروجی ``print`` و حالت تعاملی صحبت کردیم؛ در واقع خروجی ``()str`` مناسب برای چاپ است و همانند ``print`` جزییات این نوع شی را ارایه نمیدهد در حالی که ``()repr`` به مانند حالت تعاملی یک ارايه (representation) کامل از شی رشته را برمیگرداند::
328
328
@@ -360,15 +360,20 @@
360
360
.. _python-string-formatting:
361
361
362
362
قالببندی رشته (String Formatting)
363
-
------------------------------------
363
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
364
364
365
365
قالببندی امکانی برای جایگزین کردن یک یا چند مقدار (به بیان بهتر: شی) - گاهی همراه با اعمال تغییر دلخواه - درون یک رشته است که به چند روش در پایتون پیادهسازی میگردد:
366
366
367
+
* روش قدیمی و با استفاده از الگوی ``(s..." % (values%..."``
368
+
* فراخوانی متد ``()format`` - با الگو ``(format(values."...{}..."``
369
+
* f-string
370
+
371
+
367
372
368
373
.. _python-string-formatting-old:
369
374
370
-
با الگو ``(s..." % (values%..."``
371
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
375
+
قالببندی به روش قدیم
376
+
~~~~~~~~~~~~~~~~~~~~~~~~
372
377
373
378
از دو بخش تشکیل شده است؛ بخش سمت چپ عملگر ``%``، رشتهای را مشخص میکند که شامل یک یا چند کد جایگذاری شی میباشد - کدهای جایگذاری همگی با یک کاراکتر ``%`` شروع میشوند؛ مانند: ``s%`` - و در سمت راست آن شیهایی برای جایگزین شدن در رشته، داخل پرانتز قرار دارد؛ این اشیا به ترتیب از سمت چپ درون رشته جایگذاری میگردند::
374
379
@@ -523,8 +528,8 @@
523
528
524
529
.. _python-string-formatting-new:
525
530
526
-
فراخوانی متد ``()format`` - با الگو ``(format(values."...{}..."``
در این قالب اشیا، آرگومانهای یک متد مشخص هستند و با استفاده اندیس موقعیت یا نام آنها داخل ``{}`` در رشته جایگذاری میگردند::
530
535
@@ -659,8 +664,8 @@
659
664
660
665
.. _python-fstring:
661
666
662
-
f-string
663
-
~~~~~~~~~~
667
+
قالببندی به روش f-string
668
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
664
669
665
670
از نسخه پایتون 3.6 یک امکان جدید و بسیار جالب در بحث قالببندی رشتهها ارايه شده است که با عنوان ``f-string`` شناخته میشود [`PEP 498 <https://www.python.org/dev/peps/pep-0498//>`__].
666
671
@@ -761,7 +766,7 @@ f-string
761
766
.. _python-string-methods:
762
767
763
768
برخی از متدهای کاربردی یک شی رشته
764
-
-----------------------------------------------
769
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
765
770
766
771
* ``()capitalize`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#str.capitalize>`__] - یک کپی از رشته که نخستین حرف آن به صورت بزرگ (Capital) نوشته شده است را برمیگرداند::
767
772
@@ -972,12 +977,14 @@ f-string
972
977
>>> "3.4".isdigit()
973
978
False
974
979
975
-
.. _python-string-types:
980
+
.. _python-bytes:
976
981
977
-
انواع رشته
978
-
-----------------
982
+
نوع داده باینری (bytes)
983
+
------------------------
979
984
980
-
رشته در پایتون توسط سه نوع ارایه میگردد. ::
985
+
نوع داده دیگری که در پایتون فراهم آمده است، ``bytes`` بوده که معرف یک دنباله از بایتها میباشد. از این نوع داده برای تعریف تمامی دادههای باینری در پایتون استفاده میشود. دادههایی مانند یک فایل تصویر یا دادههایی که بر روی لایه شبکه (Network) تبادل میشوند، همگی در پایتون با این نوع داده قابل پردازش هستند.
986
+
987
+
سادهترین راه برای ارایه مثال، تبدیل نوع متنی یا همان ``str`` پایتون به نوع ``bytes`` است::
981
988
982
989
>>> a = "python"
983
990
>>> type(a)
@@ -987,11 +994,6 @@ f-string
987
994
>>> type(a)
988
995
<class 'bytes'>
989
996
990
-
991
-
* رشتههای معمولی (حاوی کاراکترهای اَسکی و یونیکد) که تا این لحظه با آنها کار میکردیم همگی توسط نوع ``str`` در پایتون معرفی شدهاند. در واقع یک شی از کلاس ``str`` در پایتون هستند.
992
-
* دادههای باینری: ``bytes`` - تمامی دادهها قابل چاپ نیستند، همانند دادههای یک تصویر یا صوت. گاهی لازم است دادهها در همان شکل باینری مورد پردازش قرار بگیرند. نوع ``bytes`` در پایتون یک قابلیت برای ذخیره این دست دادهها میباشد که هر چند محدودیتی در کاربرد ندارد.
993
-
* نوع تغییر پذیر (Mutable) برای دادههای باینری: ``bytearray`` - این نوع در واقع یک دنباله تغییر پذیر از نوع ``bytes`` است.
994
-
995
997
در پایتون برای ایجاد نوع ``bytes`` میتوان از حرف ``b`` در ابتدای رشته یا از کلاس ``()bytes`` [`اسناد پایتون <http://docs.python.org/3/library/functions.html#bytes>`__] استفاده کرد. در استفاده از کلاس، لازم است که سیستم کدگذاری آن را نیز مشخص نماییم و بهتر است دادههای عددی را نیز به شکل یک شی لیست ارسال نماییم::
996
998
997
999
@@ -1026,8 +1028,6 @@ f-string
1026
1028
1027
1029
همانند کلاس ``()bytes`` این بار برای ایجاد نوع ``bytearray`` از کلاس ``()bytearray`` [`اسناد پایتون <http://docs.python.org/3/library/functions.html#bytearray>`__] استفاده میشود::
1028
1030
1029
-
>>> # Python 3.x
1030
-
1031
1031
>>> b = bytearray("python", "utf-8")
1032
1032
1033
1033
>>> b
@@ -1046,6 +1046,13 @@ f-string
1046
1046
'jython'
1047
1047
1048
1048
1049
+
بنابراین به صورت کلی در پایتون:
1050
+
1051
+
1052
+
* رشتههای معمولی (حاوی کاراکترهای اَسکی و یونیکد) که تا این لحظه با آنها کار میکردیم همگی توسط نوع ``str`` در پایتون معرفی شدهاند. در واقع یک شی از کلاس ``str`` در پایتون هستند.
1053
+
* تمامی دادهها قابل چاپ نیستند، همانند دادههای یک تصویر یا صوت. گاهی لازم است دادهها در همان شکل باینری مورد پردازش قرار بگیرند. نوع ``bytes`` در پایتون یک قابلیت برای معرفی این دست دادهها میباشد که هر چند محدودیتی در کاربرد ندارد.
1054
+
* نوع تغییرپذیر (Mutable) برای دادههای باینری، ``bytearray`` است. این نوع در واقع یک دنباله تغییرپذیر از نوع ``bytes`` را تعریف میکند.
0 commit comments