در قسمت قبل دیدید که ما درباره دیتاتایپ لیست ،تابع map ، اپراتورهای overloading و برخی کتابخانه های معروف صحبت کردیم.
با ما همراه باشید در آخرین قسمت از معرفی ترفندهای این زبان محبوب.
کتابخانه Sh
این کتابخانه اینترفیسی را برای برنامهنویسها فراهم میآورد تا بتوانند فرایندهای زیرشاخۀ برنامه را به صورت یکپارچه و تحت عنوان یک تابع معمولی فراخوانی کنند و به برخی از کتابخانههای متفاوت مورد نیاز برای اجرای هر یک از این فرایندها دسترسی پیدا کرده و آنها را هندل کنند که برای مواردی همچون خودکارسازی workflow و تسکهای مختلف به صورت یکپارچه مفید است.
در زیر ما نمونهای از، استفاده از این کتابخانه را آوردهایم:
تایپ hints
پایتون یک زبان برنامهنویسی به اصطلاح داینامیک تایپ است، بدین معنی که برای تعریف نوع متغیرها، تابعها و کلاسها نیاز نیست که دیتا تایپ مربوط به هر یک از آنها را در برنامه مشخص کنیم.
که این ویژگی منجر به افزایش سرعت توسعهی نرمافزار میشود. اما این در حالی است که عدم تعریف دیتا تایپ در نوشتن کدها معایبی نیز دارا است که از جملهی مهمترین آنها میتوان به ارورهای ناشی از عدم تشخیص دیتا تایپ در پروژههای بزرگ و کاهش خوانایی کد اشاره کرد.
که در همین راستا از نسخۀ 3.5به بعدِ پایتون، قابلیتی تحت عنوان Type Hint به این زبان افزوده شد که امکان اشارهي مستقیم به دیتا تایپ متغیرها و همچنین خروجی تابعهای برنامه را برای برنامهنویسها فراهم کرده است.
برای مثال در کد زیر داریم:
در کد فوق تابعی تحت عنوان addTwo تعریف کردهایم و پارامتر x را به عنوان آرگومان ورودی به آن پاس دادهایم و پس از علامت : گفتهایم که پارامتری ورودیِ x باید از نوع int (عدد صحیح) باشد و علامت <- و پس از آن کلمهی int بدین معنا هستند، که خروجی تابع نیز از جنس int خواهد بود، که در نهایت در خط دوم گفتهایم که عدد ورودی را با عدد 2 جمع کرده و در خروجی ریترن کند.
همچنین زبان پایتون ویژگی، تحت عنوان Type Aliase دارا است که در آن میتوان دیتا تایپ مد نظر خود را به یک متغیر فرضی منتسب کرد.
در واقع، یک نام مستعار به دیتا تایپ مد نظر خود اختصاص میدهیم تا در صورت نیاز به ذکر آن در طی برنامه، با ذکر این نام مستعار پیچیدگی کد کاهش یافته و موجب خوانایی بیشتر آن میشود و برای این منظور زبان پایتون ماژولی تحت عنوان typing دارا است:
در توضیح کد بالا باید بگوییم که ابتدا ماژول typing را ایمپورت کرده و در خط بعدی نام مستعار Vector را به دیتا تایپ «لیستی از اعداد اعشاری» اختصاص دادهایم و در خط بعدی نیز گفتهایم که برای نوع دادهی (لیستی از یکسری Vector) که بیانکنندهی لیستهای تودرتو از اعداد اعشاری بوده یا به عبارتی لیستی متشکل از چند سطر از اعداد اعشاری میباشد، نام مستعار Matrix را انتخاب کردهایم.
در ادامه تابعی تحت عنوان addMatrix را تعریف کردهایم و قصد داریم تا این تابع دو ماتریس فرضی a و b را با هم جمع کند که در همین راستا به تابع addMatrix دو آرگومان ورودی a و b را دادهایم و دیتا تایپ هر دو را Matrix تعیین کردهایم، (Matrix یک نام مستعار برای دیتا تایپ لیستی چند سطری از اعداد اعشاری میباشد) و گفتهایم که خروجی این تابع نیز از نوع Matrix خواهد بود.
در خط بعدی متغیر result را تعریف کردهایم که قرار است تا خروجی حاصل از جمع دو ماتریس را نگهداری کند.
در خط بعد دو متغیر تحت عنوان i و row را تعریف کردهایم که بتوانیم اِلِمانهای هر یک از سطرهای ماتریس مد نظر را پیمایش کنیم.
در ادامه تمامی سطرهای پیمایششده از ماتریس را در متغیری تحت عنوان result_row ذخیره خواهیم کرد و enumerate نیز به عنوان شمارندهای در جهت پیمایش تکتک اِلمانهای هر سطر از این ماتریس به کار گرفته شده است.
در خط بعدی دو متغیر jو col تعریف کردهایم تا بتوانیم هر یک از عناصر موجود در سطرهای ماتریس result_row را پیمایش کنیم که به معنی پیمایش اِلمانهای موجود در هر ستون از سطرهای ماتریس مذکور میباشد.
در خط بعدی نیز از برنامه خواستهایم تا اِلمانهای متناظر از هر ستون و سطر مربوطه را با هم جمع کرده و در ماتریس result_row نگهداری کند که در نهایت مقادیر هر یک از سطرهای این ماتریس را با هم جمع کرده و نتیجه را در ماتریس result ذخیره کردهایم.
برای فراخوانی این تابع نیز دو ماتریس تحت عناوین x و y تعریف کرده و به عنوان آرگومان ورودی به تابع مذکور میدهیم و همانطور که در خط آخر از کد فوق میبینید، آبجکتی تحت عنوان z از تابع addMatrix ساخته و دو ماتریس x و y را به عنوان ورودی به این تابع دادهایم که نتیجۀ حاصل از جمع این دو ماتریس در متغیر z نگهداری خواهد شد.
ماژول Uuid
UUID مخفف عبارت Universally Unique Identifier است و ماژولی تحت همین عنوان نیز در پایتون امکان تولید اعداد تصادفی منحصربهفرد به طول 128 بیت را در اختیار برنامهنویسها قرار میدهد.
به طوری که میتوان از این اعداد به عنوان یک شناسهی منحصربهفرد به منظور شناسایی مستندات، هاستها، کلاینتهای مد نظر و هر آنچه که نیاز به نامگذاری منحصر به فرد دارند استفاده کرد.
برای مثال در کد زیر داریم:
در کد فوق، ابتدا ماژول مربوطه را ایمپورت کرده و در ادامه با فراخوانی تابع uuid4 از این ماژول، عددی تصادفی تولید خواهد شد که این عدد در متغیری تحت عنوان user_id نگهداری میشود، که با اجرای دستور خط آخر عدد تصادفی مذکور توسط تابع print چاپ میشود.
محیط مجازی (Virtual Environment)
در زبان برنامهنویسی پایتون ممکن است برای توسعهي اپلیکیشنها در برخی شرایط خاص نیاز به استفاده از پکیجها و یا ماژولهایی داشته باشیم که متعلق به نسخههای متفاوتی از این زبان باشند.
برای مثال اپلیکیشن (الف) نیاز به یک ماژول خاص از پایتون نسخهي سه داشته اما این در حالی است که اپلیکیشن (ب) نیاز به همین ماژول از نسخهي دوم این زبان دارد.
که در چنین شرایطی راهحل مناسب برای حل این مشکل ساخت یک به اصطلاح Virtual Environment (محیط مجازی) است که با استفاده از آن بتوانیم نسخهي دیگری از این زبان را نیز روی سیستم خود نصب کنیم که زبان برنامهنویسی پایتون برای ساخت و مدیریت این محیط روی سیستم، ماژولی تحت عنوان venv دارا است، که برای دانلود و نصب آن دستور زیر را در کامندلاین تایپ میکنیم:
همانطور که در دستور فوق مشخص است، نسخهی پایتون مد نظر خود را نوشته و در ادامه نام ماژول مورد نیاز برای ساخت محیط مجازی را آوردهایم و به دنبال آن نیز دایرکتوری مناسب برای ساخت این محیط را وارد میکنیم.
درون این دایرکتوری یکسری دایرکتوریهای زیرشاخهی دیگر به منظور نصب ماژولها و وابستگیهای مورد نیاز اپلیکیشن ایجاد خواهند شد، که بدین منظور هم ابتدا باید محیط مجازی ساختهشده را اَکتیو کنیم.
ماژول Wikipedia
وبسایت ویکیپدیا ، یکسری API دارا است که این امکان را در اختیار برنامهنویسها قرار میدهند تا بتوانند با دسترسی به آنها از دیتای عظیم وبسایت استفاده کنند .
در همین راستا نیز زبان برنامهنویسی پایتون ماژولی تحت عنوان wikipedia دارد که قابلیت دسترسی به این وب سرویس را در اختیار برنامهنویسها قرار میدهد. همچنین این ماژول قابلیت پشتیبانی از زبانهای مختلفی همچون انگلیسی، فارسی و ... را دارا است .
از جمله دیگر ویژگیهای این ماژول میتوان به توانایی تشخیص پیجها، تاپیکها و مطالبی با عناوین مشابه اشاره کرد.
همانطور که در کد زیر میبینید:
ابتدا اطلاعات مربوط به واژگان «Roocket.ir» را از وبسایت ویکیپدیا واکشی کرده و در متغیر result ذخیره کند و در خط بعد دیتای جمعآوریشده توسط تابع print چاپ میشود.
در ادامه هم گفتهایم که به ازای تمامی لینکهای موجود در دیتای جمعآوریشده، لینکهایی را در خروجی چاپ کند که در عنوان آنها از کلمه « Roocket.ir » به کار رفته باشد.
ماژول Xkcd
در داکیومنتهای مربوط به برخی ماژولهای استاندارد پایتون شاهد برخی طرحهای تصویری آمیخته به طنز هستیم که در همین راستا وبسایت( xkcd سایتی برای انتشار طرحهای تصویری طنزآمیز در رابطه با زبان، لطیفه و ریاضیات) بخشی از مطالب خود را به انتشار موضوعاتی در رابطه با زبان پایتون اختصاص داده است.
مضاف بر اینکه این زبان ماژولی تحت عنوان xkcdدارا است که اینترفیسی را در اختیار برنامهنویسها قرار میدهد، تا بتوانند به این وبسایت دسترسی داشته و دیتای مد نظر خود را در قالب جیسون (json) از آن بازیابی کنند.
همچنین با اجرای دستور زیر در کامندلاین نیز میتوان به وبپیج طرحهای تصویری مربوط به زبان برنامهنویسی پایتون دسترسی یافت:
نیاز به توضیح نیست که برای استفاده از ویژگیهای ماژول xkcd ابتدا باید آن را طبق روال مثالهای قبل دانلود و نصب نمایید.
YAML
YAML مخفف عبارت YAML Ain’t Markup Language بوده و یک استاندارد رایج برای تبدیل دادهها به فرمتی است که دیتای مد نظر قابلیت انتقال، ذخیره و بازسازی در بستر وب را داشته باشد.
همچنین استاندارد YAML یکسری ویژگی به منظور نمایش دیتا دارا است که منجر بدین گشته تا به عنوان یک به اصطلاح Superset یا «زیرشاخه» از استاندارد جیسون (json) به شمار آید که از جملهی این ویژگیها میتوان به امکان ذخیرهسازی آبجکتهای پیچیدهتر به همراه اِلمانهای تشکیلدهندهی آن و نوشتن فایلهای Config (پیکربندی) اشاره کرد.
در همین راستا، ماژول PyYAML امکان استفاده از فرمت دادهی YAML را در زبان برنامهنویسی پایتون برای برنامهنویسها فراهم میآورد.
این ماژول قابلیت ذخیرهسازی تمامی دیتاتایپها و آبجکتهای کلاسهای تعریفشده در برنامه را در اختیار ایشان قرار میدهد.
برای دانلود و نصب آن دستور زیر را در کامندلاین تایپ میکنیم:
تابع Zip
تابع از پیش تعریفشدهی zipقابلیتی را دارا است که طی آن مقادیری از شیءهای متعلق به دو لیست را دریافت کرده و آنها را به یک نوع دادهي دیکشنری متشکل از مقادیر این دو آرایه تبدیل میکند.
برای مثال در کد زیر داریم:
در خط اول آرایهای تحت عنوان دلخواه keys را تعریف کرده و سه مقدار رشتهای را در آن ذخیره کردهایم .
در خط بعد آرایه دیگری تحت عنوان vals تعریف کرده و سه مقدار عددی را در آن نگهداری کردهایم.
حال در ادامه با استفاده از دستور خط آخر، یک دیکشنری تحت عنوان zipped میسازیم که کلیدهای آن از آرایه keys و مقادیر متناظر آنها را از آرایه vals و دقیقاً بر اساس ترتیب مطرحشده در دو آرایه انتخاب میکنیم، که نتیجهی، حاصل ذخیرهشده در متغیر zipped را به تابع از پیش تعریفشده dict میدهیم تا خروجی را در قالب نوع داده دیکشنری در معرض دید ما قرار دهد.
سخن پایانی
در پایان، امیدواریم از این سری از مقالات ترفند های مفید زبان برنامه نویسی پایتون، راضی بوده باشید و مورد پسند شما واقع شده باشد.
همچنین برای آموزش زبان برنامه نویسی پایتون از صفر به شما پیشنهاد میکنیم که به دوره آموزشی رایگان " آموزش پایتون" در وبسایت راکت مراجعه کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید