ترفندهای مفید زبان برنامه‌نویسی پایتون - قسمت اول
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 9 دقیقه

ترفندهای مفید زبان برنامه‌نویسی پایتون - قسمت اول

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

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

توابع all و any

این توابع به صورت اصطلاحاً Built-in در زبان برنامه‌نویسی پایتون تعریف شده‌اند که عملکرد آن‌ها را در قالب مثال زیر بیان می‌کنیم:

توابع all و  any به منظور انجام عملیات منطقی and و or بر روی مقادیر یک آرایه مورد استفاده قرار می‌گیرند.

همانطور که در مثال بالا می‌بینید، آرایه‌ای به نام x با سه مقدار داریم که در خط دوم گفته‌ایم تابعany  به ازای دریافت مقادیر این آرایه، در صورتی مقدارTrue  را در خروجی چاپ کند که حداقل یکی از مقادیر آرایه True باشد که این به معنای انجام عملیات منطقیor  روی آرایه مد نظر است.

در خط سوم نیز گفته‌ایم که اگر چنانچه تمامی مقادیر آرایه True بود، در خروجی مقدار True  را چاپ کند که به منزلۀ انجام عملیات منطقیِ and روی مقادیر آرایه است و دستور خط چهارم نیز در شرایطی مقدار True  را در خروجی چاپ می‌کند که حداقل یکی از مقادیر آرایه True  یا False  باشد ولی نه همه‌ي آن‌ها. 

به عبارتی، در شرایطی که حداقل یکی از مقادیر این آرایه مخالف مابقی مقادیر آن باشد، خروجی مقدار True  خواهد بود که به منزله‌ي انجام عملیات منطقیxor  است.

Bashplotlib

این کتابخانه امکان ترسیم نمودار در محیط کنسول، برای برنامه‌نویس را فراهم می‌کند که ابتدا باید آن را از طریق کامند زیر نصب کنید:

pip install bashplot

بعد از اتمام نصب، شما می‌توانید از کتابخانه در برنامه‌های خود استفاده کنید.

Collections

زبان برنامه‌نویسی پایتون به صورت پیش‌فرض یکسری دیتاتایپ از جمله int) مقادیر عددی صحیح)، float)  عدد اعشاری)،str) مقادیر رشته‌ای)، list ) دنباله‌ای از مقادیر در قالب یک یا چند لیست) و مواردی دیگر را دارد، اما این در حالی است که ماژولی تحت عنوان collections امکان ارائه‌ی دیتا تایپ‌های بیشتری را برای برنامه‌نویس فراهم می‌کند به طوری که داریم:

 تابع dir

تا به حال فکر کرده‌اید که چگونه می توانید به داخل یک شیء در پایتون نگاهی کنید و ببینید که چه ویژگی هایی دارد؟ 

البته که شما می‌توانید این کار را با کد زیر انجام دهید:

این می‌تواند یک ویژگی عالی باشد، برای اینکه بفهمیم چه اتفاقی داخل یک شیء می‌افتد.

برای اطلاعات بیشتر می‌توانید به این لینک مراجعه کنید. 

ماژول Emoji

این ماژولی است که امکانی را در اختیار برنامه‌نویس قرار می‌دهد تا بتوانند با استفاده از در زبان برنامه‌نویسی پایتون، ایموجی مد نظر خود را در خروجی به نمایش درآورند. 

شما ابتدا باید از طریق کامند‌لاین یا ترمینال لینوکس، دستور زیر را اجرا کنید :

pip install emoji

پس دانلود و نصب ایموجی، شما میتوانید از آن استفاده کنید ما در عکس زیر نمونه از آن را آورده‌ایم. می‌توانید آنرا برای خودتان اجرا کنید تا خروجی را ببینید.

برای اطلاعات بیشتر می‌توانید به این لینک مراجعه کنید.

from __future__ import

پایتون ماژولی تحت عنوان   __future__ دارا است که این امکان را در اختیار برنامه‌نویس قرار می‌دهد، تا بتوانند ماژول‌های مد نظر خود را به گونه‌ای تعریف کنند تا در نسخه‌های آینده این زبان امکان اجرای اپلیکیشن روی ویژگی‌های جدید ارائه‌شده برای ماژول‌های مذکور فراهم شود.

همان‌طور که در کد بالا مشاهده می‌کنید، در خط اول کلاس print_function  از ماژول __future__  را ایمپورت می‌کنیم . در خط دوم نیز تابع print بر اساس قابلیت‌های جدیدش، رشته‌ي ورودیِ Hello World! را چاپ خواهد کرد.

ماژول Geopy 

این ماژول امکانی را در اختیار برنامه‌نویس‌های وب قرار می‌دهد تا بتوانند با به‌کارگیری از یکسری API  ها ، داده‌هایی همچون مختصات آدرس شهر، کشور و محل مورد نظر خود در سراسر جهان را بیابند .

همچنین این ماژول کلاسی تحت عنوان distance دارا است که قابلیت محاسبه‌ي فاصله‌ي بین دو مکان را بر اساس واحد اندازه‌گیری مد نظر برنامه‌نویس عرضه می‌کند. 

ابتدا با تایپ دستور زیر در کامندلاین، این ماژول را دانلود و نصب می‌کنیم:

pip install geopy

در ادامه قصد داریم تا با اتصال به API مربوط به سرویس google-map، آدرس دقیق مکان مد نظر خود را بیابیم .

که در همین راستا کلاسی تحت عنوانGoogleV3  از ماژول geopy را ایمپورت کرده و در ادامه، منطقه‌ی مد نظر خود را در متغیری تحت عنوان  place ذخیره می‌کنیم: 

در نهایت بوسیله تابع print می‌توانیم آدرس و مکان خودمان را چاپ کنیم.

ماژول Howdoi

این ماژول امکانی را برای برنامه‌نویس فراهم می‌کند تا بدین وسیله‌ی آن بتوانند به پاسخ برخی سؤالات خود دست یابند .

به طوری که ایشان بدون ترک محیط ترمینال (کامندلاین) می‌تواند، جواب پرسش‌های خود را در استک اورفلو جستجو کنند. 

اما باید به خاطر داشته باشیم که این ماژول پاسخ سؤالات را از میان بهترین پاسخ‌های ارائه‌شده در استک اورفلو برای ما به نمایش در خواهد آورد و ممکن است همواره مفیدترین راه حل عرضه نگردد!

برای دانلود و نصب این ماژول نیز دستور زیر را در کامندلاین تایپ می‌کنیم:

pip install howdoi

حال اقدام به تست این ماژول می‌کنیم:

همان‌طور که در ادامه می‌بینید، با استفاده از دستورهایی همچون آنچه در بالا مشاهده می‌کنید، می‌توان به پاسخ برخی از سؤالات مد نظر خود دست پیدا کرد. 

ماژول Inspect

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

در قطعه کد زیر از دو ماژول getsource و getmodule استفاده می‌کنیم.

در خط دوم کد زیر ، این قابلیت را در اختیار برنامه‌نویس قرار می‌دهد، تا بتوانند کد منبع خود را چاپ کنند.

خط سوم از کد فوق نیز این قابلیت را در اختیار برنامه‌نویس قرار می‌دهد تا بتوانند در صورت نیاز مشخص کنند که یک لایبرری، متد یا الگوریتم خاص به چه ماژولی تعلق دارد.

 همچنین از دیگر ویژگی‌های مهم ماژول  inspectمی‌توان به درک نحوه‌ی کار برنامه و همچنین امکان نوشتن مستندات مربوط به نرم‌افزار اشاره کرد.

کتابخانه Jedi

این کتابخانه امکان آنالیز و تکمیل خودکار کد را برای برنامه‌نویس‌ها فراهم می‌کند و همچنین منجر به افزایش سرعت و بهره‌وری در کدنویسی می‌شود. 

به علاوه اینکه برنامه‌نویس‌ها می‌توانند این کتابخانه را به عنوان افزونه‌ای در IDE خود مورد استفاده قرار دهند .

(پروژه IPython نیز برای توسعۀ اپلیکیشن‌های خود از این کتابخانه به عنوان ابزاری برای افزودن قابلیت تکمیل خودکار کد یا اصطلاحاً Autocompletion استفاده می‌کند.)

در این لینک می‌توانید به صفحه گیت‌هاب jedi بروید.در آنجا نحوه نصب و استفاده 

توضیح داده شده است.

kwargs**

در پروسه‌ي یادگیری هر زبان برنامه‌نویسی نقاط عطف زیادی در طی مسیر وجود دارد که در مورد زبان برنامه‌نویسی پایتون نیز درک سینتکس kwargs** ،احتمالاً به عنوان یکی از این نقاط عطف به شمار می‌رود، که دو ستاره در کنار یک آبجکت از نوع دادۀ دیکشنری، این امکان را برای برنامه‌نویس فراهم می‌کند، تا بتوانند محتویات آن دیکشنری را به عنوان آرگومان‌های ورودی به یک تابع پاس دهند.

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

همان‌طور که در کد زیر می‌بینیم، ابتدا یک آبجکت از نوع دادۀ دیکشنری تحت عنوان dictionary ساخته و دو آیتم در آن قرار دادیم که a  و b  کلید بوده و اعداد1 و 2 به ترتیب مقادیر متناظر آن‌ها هستند:

در ادامه تابعی تعریف کرده‌ایم که در آن گفته‌ایم مقادیر a و b را با هم جمع کرده و در نهایت حاصل جمع را چاپ کند. 

حال برای فراخوانی تابع مذکور دو روش را می‌توانیم در پیش بگیریم. 

روش اول که رویکرد رایجی برای فراخوانی توابع می‌باشد، همانند دستور return معروف، که گفته‌ایم که به ازای دو آرگومان عددیِ  1 و 2 تابع، فراخوانی شده و این دو عدد را با هم جمع کرده و نتیجه را در خروجی چاپ کند.

اما روش دوم بدین صورت است که نوع دادۀ دیکشنری تعریف‌شده را به عنوان آرگومان ورودی به تابع مد نظر پاس دهیم که برای این منظور نیز می‌توانیم نام دیکشنری مذکور را به همراه دو علامت  **به این تابع بدهیم.

 همان‌طور که در دو خط آخر مشاهده می‌کنید،ما می‌توانیم نتیجه را در خروجی چاپ کنیم. 

در واقع، این ماژول برای زمانی مفید است که برنامه‌نویس بخواهند تابعی بنویسند که خود این تابع قابلیت نام‌گذاری آرگومان‌های ورودی را داشته باشد، که از قبل نام‌گذاری نشده‌اند.

منتظر قسمت دوم از این سری مقالات باشید!

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

/@alireza.mzh
علیرضا معمارزاده
junior level developer

Student of Software Engineering, python Developer, i love programming and game

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید