قوانین نام گذاری متغییر ها در زبان پایتون
در این مقاله شما با شناسه ها و قوانین نام گذاری آن ها، در زبان برنامه نویسی پایتون آشنا خواهید شد. در ابتدا باید بدانید شناسه چیست و چه کاربردی دارد.
فهرست مطالب
تعریف شناسه و متغییر
در برنامه نویسی در برخی موارد نیاز داریم که یک مقدار را در حافظه به صورت ذخیره داشته باشیم، تا در زمان لزوم از آن مقدار استفاده نماییم. به عنوان مسال برنامه ای نوشته شده است که یک عدد را به عنوان سن شخص از ورودی دریافت کرده و در ادامه میخواهد روی این عدد محاسباتی انجام دهد مثلا عمر شخص را به روز محاسبه کند. حال برنامه به محض دریافت ورودی از کاربر نیاز دارد آن عدد را در محلی از حافظه (Ram) برای خود نگاهداری کند، از انجا که آدرس دهی بر روی حافظه های ماشین کار سخت، پیچیده و زمانبری است شناسه ها طراحی شدند.
حال با اطلاع از توضیحات فوق می توان گفت شناسه نام هایی هستند که اوپراتور ها برای نام گذاری متغییر ها، توابع، کلاس ها و … به بخش هایی از حافظه اختصاص می دهند که به وسیله آن و بر اساس نوع داده ای که مشخص می کنند، بخشی از حافظه را رزرو کرده و به آن نامی نسبت می دهند و از آن پس می توانند مقادیر مورد نظر خود را در آن نام یا همان بخش رزرو شده حافظه نگاهداری کنند. لازم به ذکر است منظور از نوع داده جنس داده ای است که نیاز دارید در حافظه ذخیره نمایید، به عنوان مثال میزان فضای مورد نیاز برای ذخیره یک عدد صحیح با فضای مورد نیاز برای ذخیره یک عدد اعشاری می تواند متفاوت باشد، پس هنگام تعریف شناسه باید نوع آن را مشخص کنیم تا سیستم میزان فضای مورد نیاز برای رزرو شناسه را به درستی پیشبینی کند.
اکنون که با مفهوم شناسه و کاربرد آن آشنا شدیم وقت آن رسیده که به بررسی قوانین برای انتخاب نام برای شناسه ها بپردازیم و از محدودیت های این فرایند مطلع شویم.
قوانین نام گذاری شناسه ها
1- نام شناسه ها ترکیبی از حروف کوچک [a-z] و بزرگ [A-Z] انگلیسی و ترکیب آن ها با اعداد (0 تا 9) به اضافه نماد زیرخط ( _ ) یا همان underScore می باشد. برای مثال تمامی نام های زیر اسامی صحیح برای یک شناسه می باشند.
>>> Avg = 5
>>> Avg1 = 10
>>> Avg_1 = 13
>>> _Avg = 8
>>> Avg
5
>>> Avg1
10
>>> Avg_1
13
>>> _Avg
8
2- در نام یک شناسه نمی توان آخرین کارکتر نام را، زیر خط underscore انتخاب نمود.
>>> Value_
Traceback (most recent call last):
File "", line1, in
NameError: name 'Value_' is not defined
3- زبان پایتون یک زبان case sensitive است، به این معنا که این زبان به حروف کوچک و بزرگ حساس است، پس در این زبان حروف کوچک و بزرگ با هم تفاوت دارند برای مثال “Ali” و “ali” در این زبان دو نام متفاوت هستند زیرا نام اول با حروف بزرگ و نام دوم با حروف کوچک آغاز شده است، البته این قانون برای زبان هایی که case sensitive نیستند صادق نیست. پس از این رو دو متغییر زیر در زبان پایتون با هم متفاوت هستند و هر کدام محلی مجزا و مستقل را در حافظه برای خود رزرو می کنند.
>>> Avg = 10
>>> avg
Traceback (most recent call last):
File "", line1, in
NameError: name 'avg' is not defined
>>> Avg
10
>>> avg = 20
>>> avg
20
>>> avg
10
4- نام یک شناسه نمی تواند با یک عدد شروع شود و حتما باید اولین کارکتر نام شناسه حروف کوچک یا بزرگ انگلیسی یا نماد زیر خط (underscore) باشد. برای مثال نام شناسه زیر یک نام اشتباه در پایتون می باشد.
>>> 1Avg = 34
File "<>", line 1Avg
1Avg = 34
^
SyntaxError: invalid Syntax
5- نام متغییر نمی تواند شامل فضای خالی یا Space باشد. مثال های زیر در خطوط 1 و 6 همگی نمونه های تعریف غلط نام شناسه و در خطوط 11 و 12 تعریف صحیح شناسه می باشند.
>>> Avg 1 = 25
File "<>", line 1Avg
Avg 1 = 34
^
SyntaxError: invalid Syntax
>>> Max Avg = 31
File "<>", line 1Avg
Max Avg = 31
^
SyntaxError: invalid Syntax
>>> Avg_1 = 25
>>> Max_Avg = 31
6- نام شناسه ها نمی توانند شامل کارکتر های خاص زیر باشند.
[ ! , @ , # , $ , % , ^ , & , * , . . . ]
>>> Avg@1 = 120
File "<>", line 1Avg
Avg 1 = 34
^
SyntaxError: cannot assign to operator
>>> Avg$ = 234
File "<>", line 1Avg
Avg$ = 234
^
SyntaxError: invalid Syntax
7- نام متغییر ها نمی توانند از اسامی رزرو شده یا کلمات کلیدی (keywords) استفاده شود. در پایتون ورژن 3.9 تعداد 33 کلمه کلیدی معرفی شده، که در بین آن ها کلمات کلیدی False، True و None با حروف بزرگ آغاز می شوند و باقی اسامی با حروف کوچک آغاز شده اند، لیست اسامی کلیدی را می توانید در جدول زیر مشاهده کنید.
نکته : از آنجایی که زبان برنامه نویسی پایتون یک زبان case sensitive می باشد می توان نتیجه گرفت اگر نام های کلیدی را به شکل دیگری و با تغییر در حروف کوچک و بزرگ آن استفاده کنیم می تواند به عنوان نام شناسه از آن استفاده کرد. به عنوان مثال موارد زیر را در نظر بگیرید.
>>> else = 90
File "<>", line 1Avg
else = 90
^
SyntaxError: invalid Syntax
>>> Else = 90
>>> Else
90
>>> foR = 150
>>> foR
150
نکته : لازم به ذکر است این به هیچ عنوان توصیه نمی شود چون باعث پایین آمدن خوانایی برنامه شده و ممکن است بخاطر شباهت بالای تغییر با کلمه کلیدی (Keywords) توسط برنامه نویس اشتباه در نظر گرفته شود.
تابع ( ) iskeyword
برای جلو گیری از استفاده کلمات کلیدی دو راه وجود دارد راه اول به خاطر سپردن این اسامی می باشد که در مرحله اول کار دشواریست، و برای انجام این کار زمان زیادی لازم است، راه کار دوم استفاده از تابع ()iskeyword می باشد این تابع یک نام را به صورت رشته ای به عنوان ورودی دریافت می کند و کلمه کلیدی بودن یا نبودن نام وارد شده را به عنوان خروجی بر می گرداند.
برای استفاده از این تابع ابتدا باید کتابخانه keyword را فراخوانی نمود، به مثال زیر توجه نمایید:
>>> import keyword
>>> keyword.iskeyword('for')
True
>>> keyword.iskeyword('For')
False
>>> keyword.iskeyword('pronesh.com')
False
>>> keyword.iskeyword('is')
True
همانطور که در مثال های بالا مشاهده می کنید اگر نام وارد شده جزی از اسامی کلیده باشد مقدار True و در غیر این صورت مقدار False به عنوان خروجی به نمایش در خواهد آمد.
تابع ( ) isidentifier
این تابع به شما خواهد گفت که نامی که برای شناسه خود انتخاب کرده اید از نظر کامپایلر نام صحیحی می باشد یا خیر برای درک بهتر این موضوع به مثال های زیر توجه فرمایید:
>>> 'avg'.isidentifier()
True
>>> 'avg-'.isidentifier()
False
>>> 'pronesh.com'.isidentifier()
False
>>> 'pronesh_com'.isidentifier()
True
در پایان شما را با چند نکته کلیدی برای نام گذاری شناسه ها آشنا می کنیم، این نکات به شما کمک می کند برنامه های خواناتر و کد هایی اصطلاحا، تمیزتری داشته باشید.
- بهتر است در نام گذاری شناسه ها از اسامی معنا دار استفاده کنید، این کار باعث خوانایی بیشتر برنامه می شود به این شکل که اگر بعد از گذشت زمان زیادی دوباره به برنامه خود مراجعه نمایید می توانید به راحتی متوجه کارایی شناسه تعریف شده شوید. فرض کنید به متغییری برای ذخیره بزرگترین مقدار آرایه نیاز داریم در اینجا به جای استفاده از یک شناسه با نام M می توان از شناسه ای با نام Max استفاده کرده که معنادار تر است.
- در پاراگراف قبل گفتیم که برای نام شناسه یک متغییر جهت ذخیره بزرگترین مقدار یک آرایه بهتر است از نام Max استفاده کنیم، ولی آیا نام Max value of Array نمی تواند نام بهتر و خوانا تری باشد؟! فقط نکته اصلی اینجاست که چگونه می توان از یک نام چندگانه (نامی که از چند کلمه تشکیل شده) برای نام شناسه استفاده کرد زیرا استفاده از فضای خالی (space) در نام شناسه ها غیر مجاز است اینجاست که لازم است با روش مرسوم نام گذاری متغییر های چندگانه آشنا شوید.
- استفاده از زیر خط (undescore): در این روش می توان به جای فضای خالی (space) از زیر خط به شکل زیر استفاده نمود.
>>> Max_Value_Of_Arrya
2. استفاده از نوشتار شتری (camel_case): در این روش فضای خالی بین کلمات یک نام چندگانه حذف می شوند و کلمات به یکدیگر می چسبند ولی برای تفکیک کلمات از هم حرف اول هر کلمه با حروف بزرگ و باقی حروف با حروف کوچک نوشته می شوند به جز کلمه اول، این به آن معناست که در نوشتار شتری حرف اول تمام نام ها با حرف کوچک شروع می شود مثل eBay ویا iPhone نام برند هایی که از روش نوشتار شتری استفاده می کنند. لازم به ذکر است در بین برخی برنامه نویسان رایج است در این روش حرف اول نام را نیز با حروف بزرگ استفاده می کنند که باید گفت روش کلاسیک نوشتار شتری از این روش رایج تر و مرسوم تر می باشد.
>>> maxValueOfArrya
دیدگاهتان را بنویسید