Skip to content

Commit d3aecef

Browse files
author
Saeid Darvish
authored
Merge pull request #62 from saeiddrv/draft
improved l07.2
2 parents 4e4a0c3 + bdb0997 commit d3aecef

File tree

6 files changed

+75
-35
lines changed

6 files changed

+75
-35
lines changed

source/_static/sitemap-index.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
<priority>0.80</priority>
8686
</url>
8787
<url>
88-
<loc>https://python.coderz.ir/lessons/l07-string-in-python.html</loc>
88+
<loc>https://python.coderz.ir/lessons/l07-string-and-bytes-in-python.html</loc>
8989
<lastmod>2023-03-17T17:10:25+00:00</lastmod>
9090
<priority>0.80</priority>
9191
</url>

source/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
lessons/l05-object-oriented-programming
3636
lessons/l06-python-syntax
3737
lessons/l07-numeric-types-in-python
38-
lessons/l07-string-in-python
38+
lessons/l07-string-and-bytes-in-python
3939
lessons/l08-list-and-tuple-in-python
4040
lessons/l08-set-and-dict-in-python
4141
lessons/l09
@@ -69,7 +69,7 @@
6969
:scale: 60 %
7070
:alt: بروز شده با نسخه 3.11
7171

72-
**شروع:** فروردین ۱۳۹۴ **و** **آخرین بروزرسانی:** فروردین ۱۴۰۲ [`گزارش توسعه <log.html>`__] - **در حال بروزرسانی با نسخه ۳.۱۱ پایتون**
72+
**شروع:** فروردین ۱۳۹۴ **و** **آخرین بروزرسانی:** اردیبهشت ۱۴۰۲ [`گزارش توسعه <log.html>`__] - **در حال بروزرسانی با نسخه ۳.۱۱ پایتون**
7373

7474

7575

source/lessons/l06-python-syntax.rst

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
Photo by `Tim J <https://unsplash.com/photos/gM6k0JmHIBE>`__
2020

21-
در این درس به معرفی اجزای پایه در زبان برنامه‌نویسی پایتون پرداخته شده و اینکه چه هستند، چه گرامری دارند، چه کاری انجام می‌دهند یا... مورد بررسی قرار گرفته است. همچنین در موارد بسیاری نکته‌هایی از شیوه استاندارد پایتون‌نویسی که توسط سند `PEP 8 <http://www.python.org/dev/peps/pep-0008>`__ به برنامه‌نویسان پایتون پیشنهاد می‌شود نیز آورده شده است؛ رعایت این اصول به یکدستی کدهای جامعه پایتون کمک می‌کند.
21+
در این درس به معرفی اجزای پایه در زبان برنامه‌نویسی پایتون پرداخته شده و اینکه چه هستند، چه گرامری دارند، چه کاری انجام می‌دهند یا... مورد بررسی قرار گرفته است. همچنین در موارد بسیاری نکته‌هایی از شیوه استاندارد پایتون‌نویسی که توسط سند `PEP 8 <http://www.python.org/dev/peps/pep-0008>`__ به برنامه‌نویسان پایتون پیشنهاد می‌شود نیز آورده شده است؛ رعایت این اصول به یکدستی کدهای جامعه پایتون کمک می‌کند. [#f1]_
2222

2323
سینتکس (`Syntax <http://en.wikipedia.org/wiki/Syntax_(programming_languages)>`_) مجموعه‌ای از قواعد است که چگونگی برنامه‌نویسی به یک زبان مشخص را تعریف می‌کند؛ برای نمونه اینکه یک متن چطور نوشته شود که توسط مفسر پایتون به عنوان توضیح در نظر گرفته شود یا یک شی رشته، به رعایت سینتکس تعریف شده در پایتون بستگی دارد و چنانچه مفسر نتواند متن را با هیچ قاعده‌ تعریف شده‌ای مطابقت دهد یک استثنا گزارش خواهد شد. سینتکس پایتون تنها محدود به این درس نیست و موارد بسیار دیگری به مانند چگونگی تعریف اشیا گوناگون را در طی درس‌های آتی مشاهده خواهید کرد.
2424

@@ -945,6 +945,12 @@ NoneType
945945
True
946946

947947

948+
.. _lesson-06-footer:
949+
950+
پی‌نوشت
951+
--------
952+
953+
.. [#f1] پروژه‌ای متن‌باز به منظور ترجمه PEP8 به فارسی نیز راه‌اندازی شده است. برای مطالعه می‌توانید به نشانی [`شیوه‌نامه نگارش پایتون (PEP 8 فارسی) <https://pep8.ir>`_] مراجعه نمایید.
948954

949955

950956
|

source/lessons/l07-string-in-python.rst renamed to source/lessons/l07-string-and-bytes-in-python.rst

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس هفتم: انواع داده در پایتون، رشته
4+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس هفتم: انواع داده در پایتون، str و bytes
55
:keywords: آموزش نوع داده رشته یا string در پایتون (str)، آموزش پایتون, آموزش برنامه نویسی, پایتون, انواع شی, انواع داده, انواع شی در پایتون, انواع داده در پایتون, رشته‌ها در پایتون, قالب بندی رشته, توابع رشته در پایتون
66

77

88
.. _lesson-07.2:
99

10-
درس ۰۷: انواع داده در پایتون: رشته
10+
درس ۰۷: انواع داده در پایتون: str و bytes
1111
===========================================================
1212

1313
.. figure:: /_static/pages/07-python-built-in-data-types-1.jpg
@@ -20,7 +20,7 @@
2020

2121
پایتون هر «نوع داده» (Data Type) را توسط یک کلاس ارایه می‌دهد؛ بنابراین هر داده یک نمونه یا یک شی از کلاسی مشخص است. هر چند برنامه‌نویس نیز می‌تواند با تعریف کلاس، نوع دلخواه خود را داشته باشد ولی در این درس می‌خواهیم درباره آن بخشی از انواع داده یا انواع شی‌ای که به شکل آماده (Built-in) در اختیار مفسر زبان پایتون قرار داده شده است صحبت کنیم.
2222

23-
در ادامه شرح «انواع عددی» در پایتون، این بخش به بررسی نوع «رشته» (String) در پایتون خواهد پرداخت.
23+
در ادامه شرح «انواع عددی» در پایتون، این بخش به بررسی کامل نوع داده «رشته» (String) و همچنین نوع داده باینری (Binary) در پایتون خواهد پرداخت.
2424

2525
با اینکه تلاش شده است جزییات کامل باشند ولی در برخی بخش‌ها مطالعه اسناد رسمی پایتون می‌تواند اطلاعات کامل‌تری را در اختیار شما قرار دهد. در مواقع بسیاری از تابع‌های آماده پایتون استفاده خواهد شد که ممکن است جزییاتی بیشتر از آنچه در این درس بیان می‌شود را داشته باشند؛ به همین دلیل لینک تعریف آن‌ها در اسناد پایتون نیز ارایه گشته است. نکته مهم در مطالعه این درس بررسی نمونه کدهاست که گاهی درک توضیحی که داده شده است بدون دقت در این نمونه کدها ناممکن خواهد بود.
2626

@@ -37,8 +37,8 @@
3737

3838
.. _python-string:
3939

40-
نوع رشته
41-
-----------
40+
نوع رشته (str)
41+
---------------
4242

4343

4444
نوع «رشته» (String) در پایتون با قرار گرفتن دنباله‌ای از کاراکترها درون یک جفت نماد نقل قول (Quotation) تکی ``' '`` یا دو تایی ``" "`` ایجاد می‌شود؛ به مانند ``"Python Strings"`` یا ``'Python Strings'`` که تفاوتی با یکدیگر از نظر نوع ندارند::
@@ -117,7 +117,7 @@
117117
.. _python-string-sequence:
118118

119119
رشته به عنوان دنباله‌ (Sequence)
120-
----------------------------------
120+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
121121

122122
برخی از انواع شی پایتون به مانند رشته، توپِل (tuple)، لیست (list) و... با عنوان **دنباله** (Sequence) نیز شناخته می‌شوند. دنباله ویژگی‌هایی دارد که در اینجا به کمک نوع رشته بررسی خواهیم کرد. رشته در واقع یک **دنباله** از کاراکترهاست در نتیجه می‌توان هر یک از اعضای این دنباله را با استفاده از اندیس (Index) موقعیت آن، دستیابی نمود؛ اندیس اعضا از سمت چپ با عدد صفر شروع و به سمت راست یک واحد یک واحد افزایش می‌یابد. به عنوان نمونه برای شی ``'Python Strings'`` می‌توانیم شمای اندیس‌گذاری را به صورت پایین در نظر بگیریم::
123123

@@ -198,7 +198,7 @@
198198
.. _python-string-operators:
199199

200200
عملگرها برای رشته
201-
------------------------
201+
~~~~~~~~~~~~~~~~~~~~~~~~~~
202202

203203
با رشته‌ها نیز می‌توان از عملگرهای ``+`` (برای پیوند رشته‌ها) و ``*`` (برای تکرار رشته‌ها) بهره برد::
204204

@@ -250,7 +250,7 @@
250250
.. _python-escape-characters:
251251

252252
کاراکترهای Escape
253-
---------------------
253+
~~~~~~~~~~~~~~~~~~~~~~~~~
254254

255255
به صورت پیش‌فرض تعدادی کاراکتر خاص تعریف شده است که می‌توان آن‌ها را درون رشته‌ها بکار برد. تمام این کاراکترها با یک ``\`` آغاز می‌شوند به همین دلیل گاهی نیز به نام Backslash Characters خوانده می‌شوند [`ویکی‌پدیا <https://en.wikipedia.org/wiki/Escape_character>`__]. در واقع این کاراکترها امکانی برای درج برخی دیگر از کاراکترها هستند که نمی‌توان آن‌ها را به سادگی توسط صفحه‌کلید وارد کرد. برای نمونه یکی از کاراکترهای Escape رایج ``n\`` است که بیانگر کاراکتری با کد اسکی 10 (LF) به نام newline می‌باشد؛ ``n\`` در هر جایی از رشته (یا متن) که درج گردد در هنگام چاپ سطر جاری را پایان می‌دهد و ادامه رشته (یا متن) از سطر جدید آغاز می‌‌شود::
256256

@@ -295,7 +295,7 @@
295295
.. _python-character-code:
296296

297297
تبدیل کد به کاراکتر و برعکس
298-
------------------------------
298+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
299299

300300
می‌دانیم برای اینکه کامپیوتر بتواند کاراکتر‌ها را درک کند نیاز به سیستم‌هایی است که آن‌ها را برای تبدیل به کدهای پایه دو کدگذاری کند؛ به مانند سیستم اَسکی (ASCII) یا سیستم‌های جامع‌تری مانند UTF-8 که تحت استاندارد یونیکد (Unicode) در دسترس است. گاهی نیاز است به این کدها دسترسی داشته باشیم و با کاراکترها بر اساس آن‌ها کار کنیم؛ برای این منظور در پایتون می‌توان از دو تابع ``()ord`` (تبدیل کد به کاراکتر) [`اسناد پایتون <http://docs.python.org/library/functions.html#ord>`__] و ``()chr`` (تبدیل کاراکتر به کد) [`اسناد پایتون <http://docs.python.org/library/functions.html#chr>`__] استفاده کرد. تابع ``()ord`` یک رشته تک کاراکتری را گرفته و یک عدد (در پایه ده) که بیانگر کد کاراکتر مورد نظر می‌باشد را برمی‌گرداند. تابع ``()chr`` نیز کد کاراکتری (که می‌بایست عددی در پایه ده باشد) را گرفته و کاراکتر مربوط به آن را برمی‌گرداند::
301301

@@ -322,7 +322,7 @@
322322
.. _python-convert-to-string:
323323

324324
تبدیل به نوع رشته
325-
-----------------------
325+
~~~~~~~~~~~~~~~~~~~~~
326326

327327
برای تبدیل اشیایی از نوع دیگر به نوع رشته؛ کلاس ``()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) کامل از شی رشته را برمی‌گرداند::
328328

@@ -360,15 +360,20 @@
360360
.. _python-string-formatting:
361361

362362
قالب‌بندی رشته‌ (String Formatting)
363-
------------------------------------
363+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
364364

365365
قالب‌بندی امکانی برای جایگزین کردن یک یا چند مقدار (به بیان بهتر: شی) - گاهی همراه با اعمال تغییر دلخواه - درون یک رشته است که به چند روش در پایتون پیاده‌سازی می‌گردد:
366366

367+
* روش قدیمی و با استفاده از الگوی ``(s..." % (values%..."``
368+
* فراخوانی متد ``()format`` - با الگو ``(format(values."...{}..."``
369+
* f-string
370+
371+
367372

368373
.. _python-string-formatting-old:
369374

370-
با الگو ``(s..." % (values%..."``
371-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
375+
قالب‌بندی به روش قدیم
376+
~~~~~~~~~~~~~~~~~~~~~~~~
372377

373378
از دو بخش تشکیل شده است؛ بخش سمت چپ عملگر ``%``، رشته‌ای را مشخص می‌کند که شامل یک یا چند کد جایگذاری شی می‌باشد - کدهای جایگذاری همگی با یک کاراکتر ``%`` شروع می‌شوند؛ مانند: ``s%`` - و در سمت راست آن شی‌هایی برای جایگزین شدن در رشته، داخل پرانتز قرار دارد؛ این اشیا به ترتیب از سمت چپ درون رشته جایگذاری می‌گردند::
374379

@@ -523,8 +528,8 @@
523528
524529
.. _python-string-formatting-new:
525530

526-
فراخوانی متد ``()format`` - با الگو ``(format(values."...{}..."``
527-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
531+
قالب‌بندی با متد format
532+
~~~~~~~~~~~~~~~~~~~~~~~
528533

529534
در این قالب اشیا، آرگومان‌های یک متد مشخص هستند و با استفاده اندیس موقعیت‌ یا نام آن‌ها داخل ``{}`` در رشته جایگذاری می‌گردند::
530535

@@ -659,8 +664,8 @@
659664

660665
.. _python-fstring:
661666

662-
f-string
663-
~~~~~~~~~~
667+
قالب‌بندی به روش f-string
668+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
664669

665670
از نسخه پایتون 3.6 یک امکان جدید و بسیار جالب در بحث قالب‌بندی رشته‌ها ارايه شده است که با عنوان ``f-string`` شناخته می‌شود [`PEP 498 <https://www.python.org/dev/peps/pep-0498//>`__].
666671

@@ -761,7 +766,7 @@ f-string
761766
.. _python-string-methods:
762767

763768
برخی از متدهای کاربردی یک شی رشته
764-
-----------------------------------------------
769+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
765770

766771
* ``()capitalize`` [`اسناد پایتون <http://docs.python.org/3/library/stdtypes.html#str.capitalize>`__] - یک کپی از رشته که نخستین حرف آن به صورت بزرگ (Capital) نوشته شده است را برمی‌گرداند::
767772

@@ -972,12 +977,14 @@ f-string
972977
>>> "3.4".isdigit()
973978
False
974979

975-
.. _python-string-types:
980+
.. _python-bytes:
976981

977-
انواع رشته
978-
-----------------
982+
نوع داده باینری (bytes)
983+
------------------------
979984

980-
رشته در پایتون توسط سه نوع ارایه می‌گردد. ::
985+
نوع داده دیگری که در پایتون فراهم آمده است، ``bytes`` بوده که معرف یک دنباله از بایت‌ها می‌باشد. از این نوع داده برای تعریف تمامی داده‌های باینری در پایتون استفاده می‌شود. داده‌هایی مانند یک فایل تصویر یا داده‌هایی که بر روی لایه شبکه (Network) تبادل می‌شوند، همگی در پایتون با این نوع داده قابل پردازش هستند.
986+
987+
ساده‌ترین راه برای ارایه مثال، تبدیل نوع متنی یا همان ``str`` پایتون به نوع ``bytes`` است::
981988

982989
>>> a = "python"
983990
>>> type(a)
@@ -987,11 +994,6 @@ f-string
987994
>>> type(a)
988995
<class 'bytes'>
989996

990-
991-
* رشته‌های معمولی (حاوی کاراکترهای اَسکی و یونیکد) که تا این لحظه با آن‌ها کار می‌کردیم همگی توسط نوع ``str`` در پایتون معرفی شده‌اند. در واقع یک شی از کلاس ``str`` در پایتون هستند.
992-
* داده‌های باینری: ``bytes`` - تمامی داده‌ها قابل چاپ نیستند، همانند داده‌های یک تصویر یا صوت. گاهی لازم است داده‌ها در همان شکل باینری مورد پردازش قرار بگیرند. نوع ``bytes`` در پایتون یک قابلیت برای ذخیره این دست داده‌ها می‌باشد که هر چند محدودیتی در کاربرد ندارد.
993-
* نوع تغییر پذیر (Mutable) برای داده‌های باینری: ``bytearray`` - این نوع در واقع یک دنباله تغییر پذیر از نوع ``bytes`` است.
994-
995997
در پایتون برای ایجاد نوع ``bytes`` می‌توان از حرف ``b`` در ابتدای رشته یا از کلاس ``()bytes`` [`اسناد پایتون <http://docs.python.org/3/library/functions.html#bytes>`__] استفاده کرد. در استفاده از کلاس، لازم است که سیستم کدگذاری آن را نیز مشخص نماییم و بهتر است داده‌های عددی را نیز به شکل یک شی لیست ارسال نماییم::
996998

997999

@@ -1026,8 +1028,6 @@ f-string
10261028

10271029
همانند کلاس ``()bytes`` این بار برای ایجاد نوع ``bytearray`` از کلاس ``()bytearray`` [`اسناد پایتون <http://docs.python.org/3/library/functions.html#bytearray>`__] استفاده می‌شود::
10281030

1029-
>>> # Python 3.x
1030-
10311031
>>> b = bytearray("python", "utf-8")
10321032

10331033
>>> b
@@ -1046,6 +1046,13 @@ f-string
10461046
'jython'
10471047

10481048

1049+
بنابراین به صورت کلی در پایتون:
1050+
1051+
1052+
* رشته‌های معمولی (حاوی کاراکترهای اَسکی و یونیکد) که تا این لحظه با آن‌ها کار می‌کردیم همگی توسط نوع ``str`` در پایتون معرفی شده‌اند. در واقع یک شی از کلاس ``str`` در پایتون هستند.
1053+
* تمامی داده‌ها قابل چاپ نیستند، همانند داده‌های یک تصویر یا صوت. گاهی لازم است داده‌ها در همان شکل باینری مورد پردازش قرار بگیرند. نوع ``bytes`` در پایتون یک قابلیت برای معرفی این دست داده‌ها می‌باشد که هر چند محدودیتی در کاربرد ندارد.
1054+
* نوع تغییرپذیر (Mutable) برای داده‌های باینری، ``bytearray`` است. این نوع در واقع یک دنباله تغییرپذیر از نوع ``bytes`` را تعریف می‌کند.
1055+
10491056

10501057
|
10511058

0 commit comments

Comments
 (0)