هنر برنامه نویسی با پایتون ، بخش سوم : مستند سازی کد و انواع داده

مستند سازی کد در پایتون :

فرض کنید برنامه ای نوشته اید که دارای هزار خط کد است و در آن از متغیرها ، دستورات و سایر عناصر اصلی یک زبان برنامه نویسی مانند حلقه ، تابع ، کلاس و دیگر رهنمون ها و  ساختارهای برنامه نویسی که در آینده با آنها آشنا خواهید شد استفاده کرده اید. و برای دستیابی به اهداف مشتری و حل برخی از مسائل گوناگون دنیای کسب و کار و پیاده سازی منطق تجاری ، الگوریتم های پیچیده ای را طراحی و کد نویسی کرده اید. برنامه شما پس از پایان پروژه و پشت سرگذاشتن چندین آزمون درستی کارکرد و تایید اولیه ، به مشتری تحویل داده می شود و در محیط واقعی و عملیاتی سازمان مشتری مستقر و اجرا می گردد. شش ماه پس از تحویل ، بازخوردهای داده شده از مشتری نشان می دهد که بخشی از برنامه ، خواسته های مشتری را بدرستی برآورده نمی سازد و نیاز به اصلاح و تغییر دارد. شما در این مدت منطق تجاری و فلسفه حاکم بر طراحی و پیاده سازی بسیاری از الگوریتم های کد نویسی شده در برنامه را از یاد برده اید و باید زمان بسیار زیادی را صرف خواندن خط به خط کد و درک مجدد منطق برنامه و یافتن مشکل کنید بدتر از این زمانی است که بنا بر تصمیم مدیران شرکتی که در آن کار می کنید فرد دیگری مسئول بروزرسانی و اصلاح این کد شود . خدا به چنین فردی رحم کند ،کد شما بدون توضیحات و مستند سازی لازم ، همانند کلاف سردرگمی است که بازکردنش گاو نر می خواهد و مرد کهن. 

 

از این رو برنامه نویسان حرفه ای ، تنها  به مستندات گوناگونی که در مراحل مختلف توسعه یک نرم افزار تولید می شوند دل نمی بندندو خود تمامی دستورات ، متغیرها و عملکرد بخشهای مختلف برنامه ای را که کد نویسی کرده اند را  توضیح داده و مستند می کنند تا فهم آن  برای خود برنامه نویس و دیگر افرادی که کد نوشته شده را بررسی یا استفاده خواهند کرد آسان بوده و به روشنی و بدون ابهام  درک گردد.

 در زبان پایتون برای افزودن توضیحات به کد برنامه و مستند سازی آن از نشانه #  استفاده می شود. مفسر پایتون هر نوشته ای که پس از علامت # قرار بگیرد را توضیح فرض کرده و از اجرای آن خودداری خواهد کرد.

مثال :

Age=18  #student's Age

Name="arash" #student's Name

Family="Izanlou"

#student's Family

همانگونه که در مثال بالا دیده می شود توضیحات هم می توانند در ادامه یک خط از کد نوشته شوند و هم در یک خط جداگانه آورده شوند.

توضیحات چند خطی در پایتون : لازم است بدانید که در پایتون  علامت # برای نوشتن توضیح تک خطی است و در پایتون روش خاصی برای درج توضیحات چند خطی در کد برنامه ندارد اما شما  به این منظور می توانید از دو روش زیر استفاده کنید :

روش نخست : قرار دادن هر خط از توضیحات در یک خط جداگانه :

 مثال :

#This is the First line of Comment

# This is the Second line of Comment

print("Hellow World")

روش دوم : قرار دادن متن چند خطی مورد نظر در بین دو علامت """ (Triple Quotes) ، دلیل بهره گیری از این روش ، نادیده گرفته شدن رشته های اختصاص داده نشده به یک متغیر توسط مفسر پایتون است.

مثال :

"""

This is a Comment

Written in

More than one line

"""

print("Hellow World")

 

 

 

 

دستور print در پایتون

به کمک دستور print می توانید متن و یا هر چیز دیگری را بر روی نمایشگر کاربر نمایش دهید به زبان ساده تر print یک دستور خروجی در پایتون است. این دستور بسیار پر استفاده بوده و بکارگیری آن ساده است. با امکانات و دیگر قابلیت های دستور print پس از آشنایی با مفهوم تابع  ، بیشتر آشنا خواهید شد.

مثال :

StudentFirstName = "Arman"

print(StudentFirstName)

همانگونه که دیده می شود برای چاپ یک متغیر در خروجی تنها کافیست تا نام آنرا درون تابع print() قرار دهید.

 

انواع داده در Python 

نوع داده (Data Type) یک مفهوم اساسی در زبان های برنامه نویسی است چرا که بخش بسیار مهمی از هر برنامه ، داده هایی است که در آن بکار گرفته می شوند ، این داده ها می تواند یک یا چند  ورودی ساده باشد که از کاربر گرفته می شود و یا  داده ای باشد که برنامه نویس بسادگی می تواند  در کد برنامه قراردهد و یا اینکه حجم بزرگی از داده باشد که در یک فایل و برروی دیسک سخت رایانه نگهداری می شود و یا از شبکه بارگذاری می شود . بهرحال صرف نظر از اینکه سرچشمه داده های مورد نیازیک برنامه چیست؟ داده ها  باید به صورت موقت در حافظه اصلی ذخیره و در پردازشگر مرکزی پردازش شوند یعنی عملیات ویژه ای بر روی آنها انجام شود تا برونداد دلخواه بدست آید  و هدفی که برنامه برای آن نوشته شده است تامین گردد. مفسر و یا کامپایلر زبان برای پردازش داده ها لازم است اطلاعاتی در مورد آنها داشته باشد تا بتواند آنها را بدرستی بخواند و به شیوه ای درست و بهینه ذخیره و بازیابی کند برخی از مهمترین اطلاعات مورد نیاز جهت تفسیر صحیح داده ها عبارتند از :

1- ماهیت داده : روشن شدن اینکه  داده متنی است ؟  عددی است ؟ و یا ساختار دیگری دارد.

2- بیشینه میزان فضای حافظه مورد نیاز جهت ذخیره و نگهداری داده در یکای بایت

3- عملگرهای مورد قبول داده ها : برای مثال عملگرهای ریاضی مانند ضرب و تقسیم برای داده های عددی قابل پذیرش هستند و برای داده های متنی بی معنی خواهند بود.

4- دامنه دید و یا حوزه یک متغیر (Scope) که بیانگر طول عمر یک متغیر بوده و محدوده ای از کد را مشخص می کند که متغیر در آن  معتبر بوده و قابل دسترسی است. در بیشتر زبانهای برنامه نویسی دامنه دید یک متغیر می تواند سراسر کد باشد و یا به بخش خاصی از کد محدود گردد. در حالت اول دامنه دید متغیر را سراسری (Global) و در حالت دوم محلی (Local ) می نامند.

 

نوع داده (Data Type) مهمترین ویژگی یک متغیر است که تمامی اطلاعات مورد نیاز برای تفسیر صحیح مقدار اختصاص داده شده به متغیر را برای مفسر و یا کامپایلر زبان فراهم می کند. برای نمونه با توجه به این که هرنوع داده نیازمند پردازش در نهایت به دنباله ای از بیت های 0 و 1 تبدیل و به صورت الگوهای بیتی در خانه های حافظه اصلی رایانه ذخیره می شود بنا براین نوع یک متغیر است که مفسر و یا کامپایلر را یاری می دهد تا تفسیر درستی از بیت های ذخیره شده در حافظه داشته باشد. برای مثال اگر الگوی بیتی   01000001 در خانه ای از حافظه (برای نمونه متغیری به نام age)  ذخیره شده باشد بدون مشخص بودن نوع متغیر مربوطه این الگو هم می تواند به عنوان عدد 65 تفسیر گردد و هم می تواند به عنوان کد اسکی نویسه A در نظر گرفته شود. فایده دیگر تعیین نوع داده برای یک متغیر امکان تعیین بیشینه تعداد بایت های مورد نیاز برای ذخیره مقدار متغیر در حافظه اصلی است در زبان برنامه نویسی پایتون انواع داده اصلی عبارتند از :

نوع داده

نام در پایتون

شرح

مثال

متنی

str

رشته

x="amir"


عددی

Int

عدد صحیح

x=15

y=36589652146

z=-100

float

عدد اعشاری

x=12.5

y=1.0

z=-18.55

complex

عدد مختلط

z=5j



دنباله ای

list


x=["ali","arash","arman"]

tuple

 

 tmytuple = ("apple", "banana", "cherry")

t=(66, 75, 12, 95)

range


 


مجموعه ای

Set

 

 s={66, 75, 12, 95}

myset = {"apple", "banana", "cherry"}

frozenset


در یک آموزش جداگانه بررسی خواهد شد 

نگاشتی

dict

 

 thisdict = {"brand": "Ford","model": "Mustang","year": 1964}

منطقی

bool

 منطقی

 a = True

b = False



دودویی

bytes


در یک آموزش جداگانه  بررسی خواهد شد 

bytearray

 

در یک آموزش جداگانه   بررسی خواهد شد 


memoryview

 

در یک آموزش جداگانه  بررسی خواهد شد 





پیدا کردن نوع داده یک متغیر :

در پایتون برای بدست آوردن نوع یک متغیر از دستور type() استفاده می شود.

مثال :

Age=15

Print(type(Age))

خروجی دستور بالا <class 'int'> است و به این معناست که نوع داده متغیر Age عدد صحیح است

مثال :

FirstName = "arash"

Print(type(FirstName))

خروجی دستور بالا <class 'str'> است و به این معناست که نوع داده متغیر FirstName  رشته است.

 

تعیین نوع داده یک متغیر در Python

در پایتون نیازی نیست تا نوع متغیر به هنگام تعریف آن تعیین گردد ، مفسر پایتون نوع یک متغیر را بر اساس مقدار اختصاص داده شده به متغیر تعریف می کند. برای نمونه در مثال زیر متغیر StudentFirstName از نوع رشته ای (str) و متغیر PI از نوع عدد اعشاری (float) تفسیر خواهند شد

StudentFirstName="Arash"

Pi=3.14

Print(type(StudentFirstName))

#print <class 'str'>

Print(type(Pi))

          #print<class 'float'>

به هر حال چنانچه می خواهید نوع داده یک متغیر را به هنگام تعریف و مقداردهی آن به صورت صریح مشخص کنید می توانید  این کار را همانند مثال های زیر  انجام دهید :

student_first_name=str("ali")

student_age=int(25)

student_weight=float(68.5)

student_grades=list((17,15,16,19,14,14.5))

student_is_Single=bool(1)

 

نوع داده عددی

در زبان برنامه نویسی پایتون سه نوع داده عددی وجود دارد که در سه گروه اعداد صحیح (int) ، اعداد اعشاری (float) و اعداد مختلط (complex) دسته بندی می شوند :

مثال :

X=1  # int

y=2.8 # float

z=5j  # complex

اعداد صحیح (int) تمامی اعداد بدون اعشار با هر طولی را در بر می گیرد و می تواند علامت دار (منفی یا مثبت) و یا بدون علامت باشد.

مثال :

X=1

Y=45685216584985377189

Z=-32658

اعداد اعشاری (float) که به آنها اعداد ممیز شناور و یا اعداد حقیقی نیز گفته می شود ، تمامی اعداد علامت دار (منفی یا مثبت) و یا بدون علامت که دارای یک یا تعداد بیشتری اعشار باشند را در بر می گیرد

مثال :

X= 1.15

Y= 5.0

Z= - 23.18

 این نوع داده ای برای نمایش اعداد علمی نیز بکار می رود.

مثال :

X=35e3

Y=12E4

Z=-87.7e100

 

 لازم به گفتن است که نماد گذاری علمی یکی از شیوه های نمایش اعداد بسیار بزرگ و یا بسیار کوچک است که نمی توان آنها را به سادگی در نماد ده دهی نوشت. در نمادگذاری علمی ، کلیه اعداد به شکل زیر نوشته می شوند :

a×10b

که در آن b یک عدد صحیح و ضریب a یک عدد حقیقی است.

مثال :

عدد 4000 در نماد گذاری علمی بصورت 103×4 نمایش داده می شود و یا عدد 53000-  به شکل 104×5.3- نمایش داده می شود.

چند مثال بیشتر :

عدد 6720000000  در نماد ده دهی برابر است با  109×6.72 در نماد علمی

عدد  0.00000000751   در نماد ده دهی برابر است با  -109×7.51  در نماد علمی

 

برای نمایش نماد گذاری علمی در ماشین حساب ها ، برنامه نویسی و سایر موارد که  نمی توان اعداد علمی را  به صورت a×10b نشان داد حرف e  و یا E  جایگزین عدد 10 شده و عدد صحیح b پس از E  قرار خواهد گرفت .

مثال :                           35000= 35e3

اعداد مختلط (complex) : عدد مختلط یک مفهوم ریاضی است که تعریف ویژه خود را دارد،اعداد مختلط دسته ویژه ای از اعداد هستند که از ترکیب یک عدد حقیقی و یک عدد موهومی به دست می آیند.در زبان پایتون ، بخش موهومی اعداد مختلط با پسوند j نمایش داده می شود.

مثال :``

X=3+5j

Y=8j

Z=-4j

نوع داده منطقی (Boolean) :

این نوع داده تنها می تواند دو مقدار را درون خود نگهداری کند این دو مقدار عبارتند از : درست (True) و نادرست (False)


رشته ها در پایتون :

 

رشته ، دنباله ای از حروف الفبا و یا سایر نویسه های موجود در یک زبان طبیعی مانند انگلیسی و یا پارسی است که به آن متن نیز گفته می شود. این تعریف برای رشته در زبان برنامه نویسی پایتون هم صادق است.

پردازشگر مرکزی (CPU) توانایی پردازش مستقیم حروف و نشانه های یک زبان طبیعی را ندارد و تمام آنچه را که می تواند پردازش کند اعداد دودویی است که دنباله ای از صفر ها و یک ها هستند. به زبان ساده تر داده های ورودی به رایانه از هرنوعی که باشند و با هر ابزاری که به سیستم وارد شوند خواه متنی و طریق صفحه کلید ، خواه صوتی و با  میکروفون  و خواه تصویری و از طریق اسکنر باید به اعداد دودویی تبدیل شوند تا پردازشگر مرکزی بتواند عملیات لازم را برروی آنها انجام دهد و نتیجه تولید شده دوباره از قالب دودویی به شکل قابل درک توسط انسان تبدیل و از طریق ابزار خروجی مناسب مانند صفحه نمایش ، چاپگر ، بلندگو و ... در اختیار کاربر قرار گیرد. برای مثال با فشردن کلید a در صفحه کلید ، مدارات الکترونیک موجود در صفحه کلید ، کلید فشرده شده را ابتدا به عدد 97 نگاشت می کند و سپس عدد 97 را به عدد دودویی 01100001 تبدیل کرده و دست آخر آنچه به پردازشگر مرکزی فرستاده خواهد شده عدد 01100001  است.  بنابراین برای پردازش حروف و الفبای یک زبان طبیعی مانند زبان انگلیسی  نیاز است تا تمامی نشانه های زبان طبیعی که به هریک از آنها نویسه گفته می شود بر اساس یک استاندارد جهانی به مجموعه ای از اعداد نگاشت گردد. به فرآیند نگاشت یک نویسه به یک عدد رمزگذاری (encoding) و به فرآیند عکس آن  رمزگشایی (decoding) گفته می شود.

در حال حاضر دو استاندارد جهانی فراگیرو بسیار پراستفاده برای رمزگذاری نویسه ها وجود دارد :

1- استاندارد آمریکایی برای تبادل اطلاعات (Ascii)

این استاندارد توسط موسسه استانداردهای ملی آمریکا (ANSI) تدوین شده است. این استاندارد دیرپاست اما همچنان بصورت گسترده ای برای نمایش و کار با متن به ویژه متن های زبان انگلیسی در رایانه ها بکارگرفته می شود. این استاندارد دو نسخه مختلف دارد که اولی به اسکی استاندارد (Standard Ascii) معروف است و در آن از هفت بیت برای رمزگذاری هر نویسه استفاده می شود از این رو بیشترین تعداد نویسه ای که می توان با این روش رمزگذاری کرد 128 نویسه است. این روش 128 نویسه موجود در زبان انگلیسی را به اعداد 0 تا 127 نگاشت می کند . اسکی استاندارد در قالب یک جدول که به آن جدول اسکی گفته می شود ساده سازی شده است این جدول روشی سودمند برای نمایش نگاشت هر نویسه به اعداد موجود در بازه 0 تا 127 است. بکارگیری این جدول ساده ترین راه برای یافتن کد اسکی هر نویسه است.

نوع دیگر این استاندار حالت 8 بیتی است که با نام اسکی توسعه یافته (Extended Ascii) شناخته می شود در این روش از هشت بیت برای رمزگذاری نویسه ها استفاده می گردد بنابراین توانایی رمزگذاری 256 نویسه را دارد و می تواند 256 نویسه مختلف را به اعداد 0 تا 255 نگاشت کند .حالت توسعه یافته سازگار با حالت استاندارد است به این معنی که 128 نویسه اول که به اعداد 0 تا 127 نگاشت شده اند همانند حالت استاندارد است و نویسه های اضافی پس از آن که از 128 تا 255 را در بر می گیرد آزاد بوده و می تواند بنابرنیاز به هر نویسه ای نگاشت گردد. برای مثال در روزگاری که سیستم عامل بسیار قدیمی DOS  فرمانروای بی رقیب دنیای سیستم عامل های ویژه رایانه های شخصی بود و از زبان فارسی هم پشتیبانی نمی کرد برخی از شرکت های ایرانی از این ظرفیت اسکی توسعه یافته برای معرفی نویسه های زبان فارسی به این سیستم عامل استفاده می کردند.   برای نمونه رمزگذاری ایران سیستم که توسط شرکت ایران سیستم معرفی شد و در برنامه های مبتنی بر سیستم عامل DOS  در ایران کاربرد بسیار گسترده ای داشت.

نکته : در هردو نسخه اسکی هر نویسه یک بایت از حافظه اصلی را مصرف می کند. به همین دلیل است که در زبانی چون c نوع داده ای char که برای ذخیره نویسه های اسکی بکارمی رود یک بایت از حافظه را اشغال می کند.

استاندارد Ascii نویسه های نگاشت شده را به دو  دسته چاپی و غیر چاپی افراز می کند:

نویسه های چاپی به نویسه هایی گفته می شود که توسط انسان قابل مشاهده است و می توان آنها را چاپ کرد. این  نویسه ها شامل رقم های 0 تا 9 ، حروف کوچک a تا z و حروف بزرگ A تا Z و نمادهای نقطه گذاری ( نقطه ، خط تیره یا خط فاصله ، علامت نقل قول ، علامت سوال ؟ علامت تعجب ! و ...)  است

نویسه های غیرچاپی یا کنترلی به نویسه هایی گفته می شود که نمی توان آنها را چاپ کرد و توسط انسان قابل مشاهده نیستند . از این نویسه ها در رایانه برای اهداف کنترلی استفاده می شود برای مثال نویسه DEL که برای حذف نویسه از یک متن استفاده می شود و یا نویسه CR و LF که در بسیاری از سیستم عامل ها برای مشخص کردن پایان خط در فایلهای متنی و شروع خط جدید استفاده می شوند. در استاندارد Ascii تعداد 33 نویسه کنترلی وجود دارند که 32 نویسه اول جدول اسکی (از 0 تا 31 )به همراه نویسه شماره 127 (DEL) را در بر می گیرند.

2- استاندارد جهانی Unicode (Universal  Coded Character Set  Transformation Format)

بیشینه تعداد نویسه ای که می توان با  استاندارد اسکی توسعه یافته کدگذاری کرد 256 نویسه است که با در نظر گرفتن  128 نویسه اول آن که نویسه های موجود در زبان انگلیسی و لاتین را پوشش می دهد تنها 128 عدد دیگر باقی می ماند که می توان برای رمزگذاری نویسه های موجود در دیگر زبانهای زنده دنیا استفاده کرد. که برای بسیاری از این زبان ها بسیار اندک است.  همچنین نگاشت اعداد 128 تا 255 به نویسه های هر زبان در هر یک از کشورها  مستقل از دیگری و بر اساس زبان رسمی آن کشور انجام می شد. برای مثال کد 130 در زبان روسی به یک نویسه و در زبان فارسی به نویسه دیگری اختصاص می یافت که این همپوشانی می توانست موجب ناتوانی در خواندن یک متن روسی در محیط نرم افزار فارسی گردد و برعکس آن نیز صادق است.  به این دلیل نیاز به استانداردی که بتواند علائم و نشانه های موجود در تمامی زبانهای زنده دنیا را بصورتی یکتا و منحصر بفرد  و مستقل از محیط سیستم عامل ، نرم افزار و زبان کدگذاری کند به شدت احساس می شد. این نیاز سرآغاز پیدایش استاندارد جهانی Unicode است. این استاندارد توسط یک انجمن جهانی غیر انتفاعی به نام انجمن یونیکد (Unicode Consortium) ایجاد ، نگهداری و پشتیبانی می شود. این انجمن ازگردهم آمدن شرکت های بلند آوازه ای چون IBM ،Oracle ، Microsoft ، Google و دیگر شرکت های بزرگ جهانی که رهبری تولید نرم افزار در جهان را در دست دارند تشکیل شده است.

در این استاندارد هر نویسه در هر یک از زبانهای زنده دنیا به یک کد یکتا و مستقل از سیستم عامل و نرم افزار نگاشت می شود که به آن نقطه کد (CodePoint)گفته می شود و درقالب یک عدد مبنای شانزده با پیشوند U+ نمایش داده می شود. برای مثال حرف A بزرگ در زبان انگلیسی به نقطه کد U+0041 نگاشت می گردد که همان عدد 65 در قالب ده دهی است. پیامد مهم این روش ساده اما دشوار یعنی اختصاص یک نقطه کد یکتا به تمامی نویسه های موجود در هر یک از زبانهای زنده دنیا ، امکان بومی سازی و جهانی سازی نرم افزار است و این هدیه است که استاندارد یونیکد برای برنامه نویسان و کاربران سرتاسر جهان به ارمغان آورده است .هم اکنون به لطف این استاندار است که  شما می توانید به زبان رسمی کشور خود در صفحات وب و یا در هر نرم افزار دیگری متن مورد نظر خود را بنویسید و مطئن باشید که دیگران چیزی را که می بینند همان چیزی است که شما نوشته اید. بدون آنکه نگران این باشید که کاربر مقابل از چه  سیستم عامل و یا چه مرورگری استفاده می کند. تنها چیزی که لازم است این است که نرم افزار مرورگر و سیستم عامل کاربر از استاندارد یونیکد پشتیبانی کند. در حقیقت استاندارد یونیکد کار دشوار نگاشت هر نویسه در تمامی زبانهای زنده دنیا به یک نقطه کد یکتا را در دستورکار خود قرار داد که پذیرش جهانی این استاندارد  و کاربرد بسیار گسترده و فراگیر آن در سیستم عامل های پیشرفته امروزی و زبان های برنامه نویسی پرکاربردی چون python   ، Java و C# نشان دهنده آن است که این استاندارد  از این آزمون سخت و دشوار پیروز و سربلند بیرون آمده است.

نویسه : در برابر character کوچکترین واحد متن برای نمونه یک حرف انگلیسی ، یک نماد ریاضی مانند :+ ، یک نشانه نقطه گذاری مانند . ؟ !

برای سازگار ماندن یونیکد با استاندارد قدیمی اسکی ، تمامی نقطه کدهای U+0000 تا U+007F  یعنی از 0 تا 127 به همان کدهای استاندارد اسکی نگاشت شده است.

در استاندارد یونیکد سه روش کدگذاری نویسه وجود دارد :

1- UTF-8   

Unicode Transformation  Format 8 bit

UTF-8 یک روش رمزگذاری با طول متغیر است و می تواند تا چهار بایت (32 بیت) گسترش یابد به زبان ساده تر هر نویسه در این روش می تواند از یک تا چهاربایت حافظه اشغال کند. این روش تنها از هشت بیت (یک بایت ) برای رمزگذاری نویسه های موجود در اسکی استاندارد استفاده می کند . اما برای نمایش دیگر نویسه های موجود در سایر زبانها ممکن است تا چهار بایت هم اختصاص داده شود. برای مثال نویسه های زبان فارسی ، عربی و روسی (Cyrilic) دو بایتی هستند و بسیاری از  نویسه های موجود در زبان های چینی ، ژاپنی و کره ای سه بایتی هستند همچنین فضای چهار بایتی برای نمایش شکلک ها (Emoji) و برخی از نشانه ها و علائم ریاضی استفاده می شود.  UTF-8 در حال حاضر پر استفاده ترین روش کدگذاری نویسه در استاندارد Unicode است .دلیل بکارگیری گسترده این روش سازگاری آن با اسکی استاندارد و مصرف کمتر و هوشمندانه حافظه است.

 

نگاه فنی تر به UTF-8

می دانیم که فضای مورد نیاز نویسه های رمزگذاری شده در UTF-8 از یک تا چهار بایت متغیر است از این رو نیاز است که  تعداد بایت های تخصیص داده شده به یک نویسه قابل تشخیص باشد. یعنی به روشی مشخص گردد که نویسه از یک بایت و یا بیشتر تشکیل شده است. UTF-8 این کار را به شکل زیر و با مقدار دهی به چند بیت اختصاصی در هر بایت انجام می دهد تا شکل تخصیص این بیتها به هر نویسه بر اساس تعداد بایت های تشکیل دهنده هر نویسه نیاز متفاوت باشد :

بر اساس جدول زیر برخی از ویژگی های utf-8 را می توان برشمرد :


  • نقطه‌های کد 0 تا 007f به صورت معمولی یعنی ASCII تک بایت ذخیره می‌شوند. از این رو UTF-8، در بایت اول تنها از ۷ بیت آن استفاده می‌کند و بیت اول آن برای این هدف کنار گذاشته شده است.
  • نقطه کدهای 0080 و بالاتر به صورت دودویی تبدیل می‌شوند و در یک سری بایت‌ها ذخیره (انکود) می‌شوند.
  • بایت اول «count» نشان‌دهنده تعداد بایت‌های نقطه کد است که شامل خود بایت count نیز می‌شود :
      110xxxxx  ( دو بیت11 نخست نشان‌دهنده وجود 2 بایت به صورت متوالی است که شامل بایت count نیز می‌شود پس ۲ بایت درUTF-8 تنها ۱۱ بیت را ارائه                                 می‌کند یعنی 2,048=11^2 نویسه را می توان کد کرد )
     1110xxxx ( 1110 یعنی  3 بایت در دنباله وجود دارد پس 3 بایت درUTF-8 تنها ۱۶ بیت را ارائه می‌کند یعنی  65,536=16^2 نویسه را می توان کد کرد  )
     11110xxx (11110 یعنی 4 بایت در دنباله وجود دارد پس بر اساس جدول ۲۱ بیت (  ۲,۰۹۷,۱۵۲=۲۱^۲ ) را فراهم می‌کند)
  • بایت‌هایی که با …10 آغاز می‌شوند بایت‌های داده هستند و شامل اطلاعاتی در مورد نقطه کد هستند. یک مثال 2 بایتی به صورت زیر است:
    110xxxxx 10xxxxxx  یعنی 2 بایت در دنباله وجود دارد. X ها نشان‌دهنده مقادیر دودویی نقطه کد هستند که باید دریازده بیت باقی‌مانده  ارائه شوند.


First code point

Last code point

Byte 1

Byte 2

Byte 3

Byte 4

U+0000

U+007F

0xxxxxxx

 

U+0080

U+07FF

110xxxxx

10xxxxxx

 

U+0800

U+FFFF

1110xxxx

10xxxxxx

10xxxxxx

 

U+10000

U+10FFFF

11110xxx

10xxxxxx

10xxxxxx

10xxxxxx

 

2- UTF-16

این روش از 16 بیت (دو بایت) برای رمزگذاری یک نویسه استفاده می کند

3- UTF-32

این روش از 32 بیت (چهار بایت) برای رمزگذاری یک نویسه استفاده می کند

 

حال که با مفهوم یونیکد آشنا شده اید بهتر بدانید که رشته در زبان برنامه نویسی پایتون دنباله ای از نویسه های Unicode است.

 

در پایتون هر چیزی که درون یک جفت علامت نقل انگلیسی دوتایی(") و یا تکی (') قرار گیرد ، رشته تفسیر می گردد. برای مثال مقدارهای "25"  ، '65.12' و "hello" از دید پایتون رشته هستند بنابراین برای اختصاص یک مقدار رشته ای به یک متغیر ، مقدار مورد نظر باید درون جفت علامت  های" و یا ' قرارگیرد.

مثال :

PersonName = "arash"

PersonFamily = 'izanlou'

PersonPhone="05842221111"

print("Hellow World")

print(PersonName)

print(PersonFamily)

print(PersonPhone)

برای دادن یک متن چند خطی به یک متغیر باید متن مورد نظر را درون جفت علامت های (""")  و یا (''') قرار دهید.

مثال :

PersonActDiscription = """This is The multi line

String for this example that show you

How to write multi line text"""

PersonActDiscription2 = '''This is The multi line

String for this example that show you

How to write multi line text'''

 

Print(PersonActDiscription)

Print(PersonActDiscription2)

حال که با Unicode آشنا شده اید و می دانید که پایتون به صورت پیش فرض از یونیکد پشتیبانی می کند می توان تعریف دقیق تری از رشته ها در پایتون روکرد ، یعنی می توان گفت :

 رشته در پایتون دنباله ای از نویسه های یونیکد است.

 لازم است بدانید که پایتون دارای توانایی بسیار بالایی در کار با رشته ها است که پس از آشنایی بیشتر با این زبان و در دیگر گفتارهای این کتاب با روش های مختلف کار با رشته ها در پایتون آشنا خواهید شد.


پایان بخش سوم هنر برنامه نویسی با پایتون

محمد ایزانلو

اردیبهشت 1401


نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.