موضوع مقاله: قواعد زبان پایتون | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # قواعد زبان پایتون | مقدمه: در طراحی این زبان به شدت سعی شده‌است که به سادگی قابل فهم باشد؛ این به این مفهوم است که سعی شده‌است که مجموعهٔ دستورها آن به نگارش دستورها در زبان انسان نزدیک باشد. | ## بخش 1: قواعد زبان پایتون | پایتون قصد دارد ساده و سازگار با طراحی نحو آن باشد، به گونه‌ای که در مانترا محصور شده و «برای انجام آن باید یک روش — و ترجیحاً فقط یک راه — وجود داشته باشد» از طریق ذن پایتون. این مانترا عمداً مخالف مانترا پرل و روبی است، «در این زبان‌ها، بیش از یک راه برای انجام آن وجود دارد». واژه‌های کلیدی واژه‌های کلیدی واژه‌هایی هستند که ساختار قواعد این زبان را مشخص می‌کنند؛ لذا نمی‌توان از آن‌ها به عنوان نام متغیرها استفاده کرد. اگرچه استفاده از هردو فاصله و tab در نسخه‌های کنونی پایتون معمول است، استفاده هم‌زمان از هردو آن‌ها موجب سردرگمی و ایجاد اشتباهات ناآگاهانه می‌شود؛ لذا معمولاً تنها از tab یا تنها از فاصله استفاده می‌شود. نوع داده‌ها در پایتون، نوع داده‌ها به صورت دینامیک از روی مقداری که به متغیرها نسبت داده می‌شود تعیین می‌شود. نوع داده‌ها در پایتون دارای اطلاعات ارجاع به نوع شیئی هستند که از آن ساخته شده‌اند. به خاطر ویژگی دینامیک بود نوع داده‌ها در پایتون، تبدیل نوع متغیرها احتیاج به در قالب ریختن متغیرها ندارد. به عنوان یک عدد موهومی در یک عدد صحیح بلند را ضرب کنید و پایتون به صورت خودکار نوع حاصل را تعیین می‌کند. به‌طور کلی نوع داده‌ها در پایتون به دو دستهٔ تغییرناپذیر و تغییرپذیر تقسیم می‌شوند. تغییرناپذیر متغیرها در پایتون به این معنی است که نمی‌توان متغیر را بعد از ایجاد دستکاری کرد؛ لذا برای بر خلاف بسیاری از زبان‌های دیگر، تغییر رشته در باعث ایجاد رشته‌ای دیگر می‌شود. نوع‌های مجموعه‌ای نوع داده‌های مجموعه‌ای دارای دو دستهٔ دارای ترتیب و بدون ترتیب (نگاشت یا ) هستند. نوع داده‌های دارای ترتیب در بردارندهٔ مقادیر هستند که به صورتی مرتب پشت سر هم قرار گرفته‌اند. این نوع داده‌ها می‌توانند (بجز رشته‌ها) می‌توانند نوع داده‌های مختلف غیر یکسان را دربر گیرند. یعنی می‌توان آن‌ها را «در جا» ویرایش (حذف عنصر، اضافه کردن عنصر، عوض کردن مقدار، مرتب‌سازی …) کرد. یعنی مجموعه‌ای تغییرناپذیر را به مجموعهٔ از اشیا می‌نگارند؛ لذا در کل ترتیبی برای داده‌ها در نظر گرفته نمی‌شود. | ## بخش 2: قواعد زبان پایتون | اشیایی که نگاشته می‌شوند (کلیدها یا ) باید از نوع تغییرناپذیر باشند، مانند اعداد صحیح یا یک رشته. این مسئله به خاطر آن است که در پشت صحنه، نگارش توسط یک تابع درهم سازی انجام می‌شود. تغییرناپذیر باعث می‌شود عملیات در بازدهی زمانی/حافظه‌ای بهتری انجام شوند؛ اگرچه لازم است که مقادیر آن‌ها ثابت بمانند؛ لذا چنین ساختاری «دیکشنری» نام دارد. نوع دادهٔ مشابه دیگر «مجموعه» نام دارد که شامل تعداد شی بدون ترتیب است که بدون تکرار هستند، درست مانند تعریف ریاضی مجموعه‌ها؛ لذا به راحتی می‌توان از آن‌ها برای انجام عملیات مجموعه‌ای مانند اجتماع، اشتراک، تفاضل، تفاضل متقارن، زیر مجموعه‌گیری استفاده کرد. بعضی‌ها از اصطلاح فاقد نوع (untyped) برای متغیرهای پایتون (و دیگر زبان‌های دینامیک) استفاده می‌کنند که تعبیر غلطی است. این که در زبانی مانند C# تعریف متغیرها با اعلان نوع همراه باشد (مانند int x = 10) و در زبانی مانند پایتون نیاز به اعلان نوع نباشد (x=10)، به این معنی نیست که متغیرهای C# دارای نوع هستند و متغیرهای پایتون فاقد نوع. متغیرهای پایتون و هر زبان دیگر دارای نوع هستند؛ منتها تفاوت به استاتیک یا دینامیک بودن سیستم نوع برمی‌گردد که تعیین می‌کند که نوع متغیرها در طول برنامه قابل تغییر باشد یا خیر. پس، با وجودی که ما نوع متغیرهای پایتون را صراحتاً اعلان نمی‌کنیم، این متغیرها دارای نوع هستند و مفسر پایتون، نوع یک متغیر را از روی آخرین مقداری که دریافت کرده، استنتاج می‌کند. با توجه به محدودیت‌های نشانه‌گذاری، رشته‌های خام ممکن است دارای خستگی برگشت‌ناپذیر نباشند. ایجاد یک رشته خام با نگه داشتن یک مسیر پنجره‌هایی که به صورت برگشتی به انتهای خود منتهی می‌شود، به انواع مختلفی از کار نیاز دارد (معمولاً استفاده از اسلش‌های جلو به جای بک لایت، زیرا پنجره هر دو را می‌پذیرد). عدد صحیح در پایتون طول دلخواه دارد و در صورت نیاز به‌طور خودکار فضای حافظه را زیاد می‌کند. تا قبل از نسخهٔ ۳ پایتون، دو نوع عدد صحیح موجود بود، یکی اعداد صحیح عادی با طول ثابت، و دیگری اعداد صحیح با طول بلند یا "long" با طول دلخواه. اینکه از کدام نوع عدد صحیح استفاده شود، به صورتی خودکار توسط پایتون انجام می‌شد. استفاده از این نوع زمانی انجام می‌شود که از علامت نقطه به عنوان ممیز اعشار استفاده شود، مانند ۱٫۱. لیست‌ها، تاپل‌ها، مجموعه‌ها، دیکشنری‌ها همان‌طور که گفته شد، لیست‌ها دارای ساختار تغییرپذیر هستند. | ## بخش 3: قواعد زبان پایتون | a_tuple = 1, 2, 3, "four" اگرچه در تعریف فوق توپل توسط کاما بین اعضای آن تعریف می‌شود، می‌توان با قرار دادن پرانتز بین اعضای آن تعریف آن را قابل فهم تر می‌کند. دلیل این مسئله این است که تقسیم اعداد به صورت صحیح انجام شده و لذا نتیجه عددی صحیح است. عملگرهای مقایسه‌ای == برای تشخیص آنکه ورودی با مقدار مقدار داده‌شده برابر است: g == 2 <> (پایتون ۲) و =! (پایتون ۳) برای تشخیص مساوی‌نبودن ورودی و مقدار داده‌شده: g != 2 < برای تشخیص بزرگتر بودن ورودی از مقدار و =< برای تشخیص بزرگتر یا مساوی بودن ورودی از مقدار. > برای تشخیص کوچکتر بودن ورودی از مقدار و => برای تشخیص کوچکتر یا مساوی بودن ورودی از مقدار. is برای تشخیص هماهنگی ورودی و مقدار و is not برای تشخیص هماهنگی نبودن in برای تشخیص قرارداشتن مقدار در ورودی و not in برای تشخیص برعکس در صورت درست بودن، به‌ما True و در غیر این صورت، False می‌دهد برنامه‌نویسی تابعی سبک برنامه‌نویسی تابعی به سبکی از برنامه‌نویسی گفته می‌شود که در آن به صورتی به صورت‌هایی مؤثر تر از قابلیت‌های لیست‌ها و نوع داده‌های آن برای انجام عملیات نسبتاً پیچیده‌تر استفاده می‌شود. مرکب‌ها لیست مرکب لیستی است که مقادیری به آن داده شده و همراه حلقه for درون لیست می‌توان آن مقادیر را تا جای ممکن تکرار کرد. توابع کلاس‌اول در پایتون، توابع کلاس اول هستند که می‌توانند به‌صورت دینامیکی ایجاد شده و به اطراف منتقل شوند. برنامه زیر با کاراکتر ۵ اجرا می‌شود: f = lambda x: x**2 f(5) لامبداها یک عمل را به‌جای چندین عمل انجام می‌دهد، اگرچه جریان کنترل هنوز هم با استفاده از اتصال کوتاه می‌تواند کمتر با ظرافت در لامبدا اجرا شود، و اصطلاحات بیشتری با عبارات شرطی دارند. توجه داشته باشید که بستارهای الزام‌آور از یک نام تاحدی قابل تغییر از درون تابع نیست. در پایتون ۲ (فاقد nonlocal در نسخه) راه حل معمول این است که از مقدارهای تغییرپذیر استفاده نمود و آن مقدار را تغییر داد، این کار الزام‌آور نیست. مولدها در پایتون ۲٫۲ به عنوان یک ویژگی اختیاری معرفی و در نسخه ۲٫۳ نهایی شده‌است، مولد است که سازوکاری برای ارزیابی کندرو از یک تابع می‌باشد و در غیر این صورت یک فضای منع‌کننده یا لیست محاسباتی فشرده را برگشت می‌دهد. با این حال، یک مولد یک شیء با حالت مداوم است، که می‌توان بارها و بارها وارد و خارج از محدوده یکسان شد. سپس بایک تماس مولد می‌توان در محل از یک لیست استفاده کرد، یا دیگر ساختارهایی که عناصر در آن تکرار خواهد شد. هر زمان که حلقه for در مثال نیاز دارد به مورد بعدی برود، این مولد نامیده می‌شود، و محصول مورد بعدی را باز می‌دهد. | ## جمع‌بندی | دکوراتورها دکوراتور شیء قابل فراخوانی‌ای است که به منظور پیرایش تعریف تابع کلاس یا متد استفاده می‌شود.