در بخش قبل، با روش نصب پایتون آشنا شدید و توانستید اولین کد خود را با استفاده از زبان پایتون اجرا کنید. در این آموزش از فنولوژی، با قواعد کدنویسی در پایتون و نکات مهم زبان برنامه نویسی پایتون آشنا خواهید شد.
قواعد کدنویسی در پایتون: دستورهای پایتون | Statements
دستورالعملهایی که برای اجرا به مفسر پایتون داده میشود، دستورهای پایتون هستند. عملهایی مانند جمع، تفریق، ضرب و …، و همچنین فراخوانی توابع، همگی دستورهای پایتون هستند. همچنین دستورات تخصیص، مانند x = 10 نیز از دستورهای پایتون هستند.
دستورهای چندخطی پایتون
معمولا همهی دستورهای پایتون با رفتن به خط بعدی پایان مییابند. با این حال امکان گسترش دادن دستورات پایتون در چند خط، با استفاده از کاراکتر بکاسلش (\) وجود دارد.
مثال #۱:
1 2 3 4 5 6 7 |
message = "Hello There.You have come to the right place to learn Python Programming. " \ "Follow the tutorials to become expert in Python. " \ "Don't forget to share it with your friends too." print(message) |
خروجی #۱:
1 |
Hello There.You have come to the right place to learn Python Programming. Follow the tutorials to become expert in Python. Don't forget to share it with your friends too. |
همچنین دستوراتی را که درون پرانتز ( )، براکت [ ] و آکولاد { } قرار میگیرند نیز میتوان در چند خط نوشت. پرانتزها برای عبارات، تاپلها (tuples) و رشتهها استفاده میشوند. براکت برای لیستها، و آکولاد برای شیءهای دیکشنری استفاده میشود.
مثال #۲:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
message = ("Hello," "This is " "Fanology.") math_result = (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10) print(message) print(math_result) |
خروجی #۲:
1 2 3 |
Hello,This is Fanology. 55 |
قرار دادن چند دستور در یک خط
هرچند پیشنهاد میشود که هر خط تنها به یک دستور اختصاص داده شود، امکان قرار دادن چند دستور در یک خط نیز در پایتون وجود دارد. برای این کار باید از کاراکتر نقطهویرگول (;) استفاده کرد.
مثال #۳:
1 2 3 |
x = 1; y = 2; z = 3 print(x); print(y); print(z) |
خروجی #۳:
1 2 3 |
1 2 3 |
قواعد کدنویسی در پایتون: تورفتگی خطوط پایتون | Indentation
در بیشتر زبانهای برنامهنویسی، تورفتگی خطوط اختیاری بوده و تنها به منظور بهبود خوانایی کد اعمال میگردد. اما تورفتگی، از مهمترین قواعد کدنویسی در پایتون بوده و برای اجرای درست کدها ضروری است. در صورت رعایت نکردن تورفتگی خطوط پایتون، با خطای IndentationError مواجه میشوید و کد اجرا نخواهد شد.
به زبان ساده، تورفتگی خطوط به معنای اضافه کردن فاصله قبل از دستورات است. اما چرا این فاصلهها مهم هستند؟
برای فهمیدن این موضوع، فرض کنید قصد خواندن کتابی را دارید، اما شمارهی صفحههای این کتاب پاک شده است و ابتدا و انتهای کتاب مشخص نیست. در این صورت شما نمیدانید که از کجا کتاب را شروع کنید و گیج میشوید. در پایتون هم اتفاقی تقریبا شبیه به همین میافتد. بدون تورفتگی خطوط، مفسر پایتون نمیتواند تشخیص دهد که چه دستوری را باید اجرا کند و کدام دستور به کدام بلوک کد تعلق دارد. بنابراین با خطای IndentationError مواجه خواهید شد.
برای مثال در تصویر بالا داریم:
- دستور (Statement) خط اول، شرط if خط دوم، و دستور خط آخر، همه یه یک بلوک تعلق دارند. این بدین معناست که بعد از دستور خط اول، شرط if خط دوم اجرا میشود. حال با فرض برقرار نشدن شرط if، پایتون به خط آخر میپرد و دستور آخر را اجرا میکند.
- شرط درونی if-else خط سوم و پنجم، به بلوک دوم تعلق دارد. اگر شرط درونی if برقرار نشود، پایتون دستور موجود در else را اجرا میکند.
- دستورهای درون شرط if-else، به بلوک سوم کد تعلق دارند و با توجه به شرط if-else، فقط یکی از آنها اجرا میشود.
با استفاده از تورفتگی خطوط پایتون، میتوانیم به مفسر پایتون بفهمانیم که هر مجموعه از دستورات مربوط به کدام بلوک از کد است. بلوکها را میتوان گروههایی از دستورات، که برای منظور خاصی استفاده میشوند در نظر گرفت. این کار معادل قرار دادن قسمتی از کد در { } در زبانهای C، Cpp و java میباشد.
نحوهی ایجاد تورفتگی خطوط پایتون
در پایتون برای ایجاد تورفتگی در خطوط، از کلید Space یا Tab استفاده میشود. همهی دستوراتی که به اندازهی یکسانی فاصلهگذاری شدهاند، به یک بلوک کد تعلق دارند. تعداد فاصله از ابتدای خط به عهده خود برنامه نویس است؛ اما ثبات قدم مهم است و لازم است که در تمام خطوط یک بلوک از کد، از فاصلهگذاری یکسانی استفاده نمایید.
مثال #۴:
1 2 3 4 5 |
if 5 > 2: print("Five is greater than two!") if 5 > 2: print("This is correct!") print("This is correct too!") |
خروجی #۴:
1 2 3 |
Five is greater than two! This is correct! This is correct too! |
حال در مثال زیر خواهید دید که اگر میزان تورفتگی خطوط یک بلوک کد یکسان نباشد، خطا دریافت میکنید.
مثال #۵:
1 2 3 |
if 5 > 2: print("Five is greater than two!") print("This is NOT correct!") |
خروجی #۵:
1 |
IndentationError: unexpected indent |
همچنین در صورت جا انداختن فاصله از ابتدای خط، پایتون اعلام خطا مینماید:
مثال #۶:
1 2 |
if 5 > 2: print("Five is greater than two!") |
خروجی #۶:
1 |
IndentationError: unexpected indent |
نکته: پایتون به صورت پیشفرض، چهار Space را به عنوان تورفتگی خطوط در نظر میگیرد. با این حال، شما میتوانید از هر تعداد دلخواهی Space یا Tab استفاده نمایید؛ اما حداقل فاصله برای تورفتگی خطوط پایتون، یک Space است. |
قواعد کدنویسی در پایتون: کامنت در پایتون | Comments
کامنتگذاری ابزار بسیار مفیدی در نوشتن کدهای تمیز است و از مهمترین قواعد کدنویسی در پایتون میباشد. برنامهنویسان با نوشتن کامنت در پایتون، از پیچیده شدن بیش از حد کدها جلوگیری میکنند. با نوشتن کامنت در پایتون، مشخص میکنیم که هر قسمت از کد برای انجام چه کاری است. علاوه بر آن، کامنتگذاری برای عیبیابی کدها نیز ابزار مفیدی است؛ به این دلیل که میتوانیم قسمتهایی از کد را کامنت کنیم تا مفسر آنها را نادیده بگیرد. همچنین با کامنتگذاری، فهم کدها را برای برنامهنویسان دیگر آسانتر میکنیم.
مثال #۷:
1 2 3 4 5 6 7 |
# Python program to demonstrate comments # sample comment: website ="fanology" print(website) |
خروجی #۷:
1 |
fanology |
در مثال بالا دیدیم که کامنتها توسط مفسر نادیده گرفته میشوند و در خروجی کد اثری از آنها مشاهده نمیشود.
به طور کلی، کامنت در پایتون برای موارد زیر استفاده میشود:
- خواناتر نمودن کد
- توضیحات کد و اطلاعات پروژه
- جلوگیری از اجرای بخشی از کد
انواع کامنت در پایتون
به طور کلی سه نوع اصلی کامنت در پایتون وجود دارد و آنها عبارتند از:
۱- کامنت یک خطی
کامنت یک خطی در پایتون با علامت هشتگ (#) شروع میشود و تا پایان خط ادامه مییابد. هرچه پس از علامت هشتگ بیاید، توسط مفسر نادیده گرفته میشود. اگر کامنت بیش از یک خط باشد، کافیست خطوط دیگر را نیز با # شروع کنید. همچنین لازم نیست تمام یک خط را به یک کامنت اختصاص دهید؛ میتوانید پس از قطعهای کد نیز آنها را جهت توضیح بیشتر بیاورید. کامنت یک خطی، برای کارهایی مثل توضیح متغیرها، توابع و عبارات مناسب است.
مثال #۸:
1 2 3 4 |
# این یک کامنت است print("Hello, World!") print("Hello, World!") # این هم یک کامنت است! |
۲- کامنت چند خطی
کامنت چند خطی در پایتون، قطعهای متن است که با استفاده از سه علامت نقل قول (“””) شروع و پایان مییابد. این کامنتها زمانی مورد استفاده قرار میگیرند که قصد داریم یک متن طولانی را کامنت کنیم. کامنتهای چند خطی در مستند سازی کد، زمانی که افراد دیگری قصد خواندن کد را دارند، کاربردی است.
البته باید توجه داشته باشید که مفسر پایتون این کامنتها را میخواند ولی عملی رویشان انجام نمیدهد.
مثال زیر نمونهای از این نوع کامنت در پایتون است:
مثال #۹:
1 2 3 4 5 6 |
""" This is a comment written in more than just one line """ print("Hello, World!") |
۳- کامنت Docstring
کامنت Docstring یک قابلیت دیگر تعبیه شده در پایتون است. در واقع این کامنتها همان کامنتهای چند خطی هستند که درون ماژولها، توابع، کلاسها و متدهای پایتون قرار میگیرند و با صفت __doc__ قابل دسترسی هستند. اگر کامنت چند خطی در جاهای دیگر کد استفاده شود، قابل دسترسی نخواهد بود. با مفاهیم ماژول، تابع، کلاس، و متد در آموزشهای آینده آشنا خواهید شد.
در مثال زیر با استفاده از Docstring، یک تابع را توضیح دادهایم و در خروجی آن را چاپ کردهایم.
مثال #۱۰:
1 2 3 4 5 6 |
def multiply(a, b): """Multiplies the value of a and b""" return a*b # Print the docstring of multiply function print(multiply.__doc__) |
خروجی #۱۰:
1 |
Multiplies the value of a and b |
قواعد کدنویسی در پایتون: عملگرها در پایتون | Operators
همان طور که گفتیم، یکی از انواع دستورهای پایتون، عملگرها هستند. عملگرها در پایتون، نمادهای خاصی هستند که محاسبات حسابی یا منطقی را انجام میدهند. از عملگرها برای انجام عملیات روی مقادیر و متغیرها استفاده میشود. عبارتی که عملگر روی آن عملی را انجام میدهد، «عملوند» نام دارد؛ مثلا در عبارت ۲+۳، علامت جمع عملگر است و اعداد ۲ و ۳ عملوند هستند.
در پایتون عملگرها را به دستههای زیر تقسیم میکنیم:
- عملگرهای حسابی | Arithmetic Operators
- عملگرهای تخصیص | Assignment Operators
- عملگرهای مقایسهای | Comparison (Relational) Operators
- عملگرهای منطقی | Logical Operators
- عملگرهای هویتی | Identity Operators
- عملگرهای عضویتی | Membership Operators
- عملگرهای بیتی | Bitwise Operators
عملگرهای حسابی در پایتون
عملگرهای حسابی همراه با اعداد و ارقام برای محاسبات ریاضی رایج استفاده میشوند:
مثال | توضیح | عملگر |
x + y | جمع دو عملوند | + |
x – y | تفریق دو عملوند | – |
x * y | ضرب دو عملوند | * |
x / y | تقسیم اعشاری (float) عملوند اول بر دوم | / |
x // y | تقسیم گرد شده به پایین (floor) عملوند اول بر دوم | // |
x % y | باقیماندهی تقسیم عملوند اول بر عملوند دوم | % |
x ** y | به توان رساندن عملوند اول به عملوند دوم | ** |
مثال #۱۱:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# Examples of Arithmetic Operators a = 9 b = 4 # Addition of numbers add = a + b # Subtraction of numbers sub = a - b # Multiplication of numbers mul = a * b # Division(float) of numbers div1 = a / b # Division(floor) of numbers div2 = a // b # Modulus of both numbers mod = a % b # a Powered by b power = a ** b # print results print("a + b = ", add) print("a - b = ", sub) print("a * b = ", mul) print("a / b = ", div1) print("a // b = ", div2) print("a % b = ", mod) print("a ** b = ", power) |
خروجی #۱۱:
1 2 3 4 5 6 7 |
a + b = 13 a - b = 5 a * b = 36 a / b = 2.25 a // b = 2 a % b = 1 a ** b = 6561 |
عملگرهای تخصیص در پایتون
از عملگرهای تخصیص برای گماشتن و منصوب کردن مقادیر به متغیرها استفاده میشود:
عملگر | مثال | معادل با |
= | x = 5 | x = 5 |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x – 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
%= | x %= 3 | x = x % 3 |
//= | x //= 3 | x = x // 3 |
**= | x **= 3 | x = x**3 |
&= | x &= 3 | x = x & 3 |
|= | x |= 3 | x = x | 3 |
^= | x ^= 3 | x = x ^ 3 |
>>= | x >>= 3 | x = x >> 3 |
<<= | x <<= 3 | x = x << 3 |
عملگرهای مقایسهای پایتون
عملگرهای مقایسهای برای مقایسهی دو مقدار به کار میروند:
نام |
عملگر |
تساوی | x == y |
عدم تساوی | x != y |
بزرگتر از | x > y |
کوچکتر از | x < y |
بزرگتر مساوی با | x >= y |
کوچکتر مساوی با | x <= y |
عملگرهای منطقی پایتون
از عملگرهای منطقی برای ترکیب جملات شرطی استفاده میشود و خروجی آنها دو حالت True یا False (یک یا صفر) است.
عملگر | توضیح | مثال |
and | در صورت True بودن هر دو عملوند، True بازمیگرداند؛ در غیر این صورت خروجی False است. | x < 5 and x < 10 |
or | در صورت True بودن حداقل یکی از عملوندها، True بازمیگرداند؛ در غیر این صورت خروجی False است. | x < 5 or x < 4 |
not | معکوسگر. در صورت True بودن عملوند، آن را False میکند و برعکس. | not(x < 5 and x < 10) |
مثال #۱۲:
1 2 3 4 5 6 |
x = True y = False print('x and y is',x and y) print('x or y is',x or y) print('not x is',not x) |
خروجی #۱۲:
1 2 3 |
x and y is False x or y is True not x is False |
عملگرهای هویتی پایتون
از عملگرهای هویتی برای بررسی یکی بودن دو شی استفاده میشود. این عملگر، یکسان بودن مکان ذخیرهسازی دو عملوند در حافظه را بررسی میکند. خروجی این عملگر به صورت True یا False است.
عملگر | توضیح | مثال |
is | در صورتی که هر دو متغیر، شی یکسانی باشند، True بازمیگرداند؛ در غیر این صورت خروجی False است. | x is y |
is not | در صورتی که متغیرها شی یکسانی نباشند، True بازمیگرداند؛ در غیر این صورت خروجی False است. | x is not y |
مثال #۱۳:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
x1 = 5 y1 = 5 x2 = 'Hello' y2 = 'Hello' x3 = [1,2,3] y3 = [1,2,3] # Output: False print(x1 is not y1) # Output: True print(x2 is y2) # Output: False print(x3 is y3) |
خروجی #۱۳:
1 2 3 |
False True False |
در این مثال، میبینیم که x1 و y1 هر دو اعداد صحیح هستند و مقدار مساوی دارند، بنابراین همهویت هستند. این برای x2 و y2 نیز صادق است. اما x3 و y3 از نوع لیست هستند. مقادیر آنها مساوی است، اما شیهای یکسانی نیستند؛ چرا که مفسر پایتون، آنها را در مکانهای مختلفی از حافظه ذخیره میکند.
عملگرهای عضویتی پایتون
عملگرهای عضویتی برای بررسی حضور یک متغیر یا عدد در دنبالهها (sequence مانند رشته، لیست، دیکشنری و …) به کار میروند:
عملگر | توضیح | مثال |
in | اگر مقدار عملوند اول در عملوند دوم یافت شود، True و در غیر این صورت False است. | x in y |
not in | گر مقدار عملوند اول در عملوند دوم یافت نشود، True و در غیر این صورت False است. | x not in y |
عملگرهای بیتی پایتون
عملگرهای بیتی برای مقایسهی اعداد باینری (دودویی، در مبنای دو) به کار میروند. در جدول زیر، مثالها با فرض x = 10 (binary: 0000 1010) و y = 4 (binary: 0000 0100) نوشته شدهاند.
مثال | عملگر | نام | توضیح |
x & y = 0 (0000 0000) | & | AND | تنها زمانی خروجی یک است که هر دو بیت یک باشند |
x | y = 14 (0000 1110) | | | OR | اگر یکی یا هر دو بیت یک باشد، خروجی یک خواهد بود |
x ^ y = 14 (0000 1110) | ^ | XOR | تنها زمانی خروجی آن یک خواهد بود که هر دو بیت مخالف یکدیگر باشند |
~x = -11 (1111 0101) | ~ | NOT | تمام بیتها را معکوس میکند |
x << 2 = 40 (0010 1000) | << | شیفت چپ | بیتهای عملوند اول را به مقدار عملوند دوم به سمت چپ جابهجا میکند |
x >> 2 = 2 (0000 0010) | >> | شیف راست | بیتهای عملوند اول را به مقدار عملوند دوم به سمت راست جابهجا میکند |
قواعد کدنویسی در پایتون: اولویت عملگرهای پایتون
یکی دیگر از قواعد کدنویسی در پایتون، اولویت عملگرها است. اگر بخواهیم در یک عبارت، بیش از یک عملگر را به کار ببریم، لازم است اولویت آنها را نسبت به یکدیگر بدانیم. اولویت عملگرهای پایتون در جدول زیر آورده شده است؛ اولیت از بالا به پایین کاهش مییابد.
عملگر | توضیحات |
() | پرانتز |
** | توان |
~x | NOT بیتی |
+x, -x | علامت مثبت و منفی |
*, /, // , % | ضرب، تقسیم و باقیمانده |
+, – | جمع و تفریق |
<<, >> | شیفت بیتی |
& | AND بیتی |
^ | XOR بیتی |
| | OR بیتی |
in, not in, is, is not, <, <=, >, >=,
<>, !=, == |
عملگرهای عضویتی، مقایسهای و هویتی |
not x | NOT منطقی |
and | AND منطقی |
or | OR منطقی |
پرانتز بالاترین اولویت را بین عملگرها دارد؛ بنابراین بهتر است هنگام ترکیب چند عملگر، برای خوانایی بهتر کد و جلوگیری از اشتباه، از پرانتز استفاده کنید. همچنین اگر عبارتی شامل چند عملگر همسطح باشد، اولویت عملگر سمت چپ بیشتر است.