قابلیت های کمتر شناخته شده اما کاربردی پایتون

پایتون یکی از محبوب‌ترین زبان‌های برنامه نویسی در میان توسعه‌دهندگان است. پایتون به واسطه سینتکس ساده و کاربرد آن در حوزه‌های محتلف، به ویژه علم داده، شناخته می‌شود. علاوه بر این، پایتون دارای یکی از فعال‌ترین اجتماعات برنامه‌نویسی متن‌باز است. این جامعه عظیم از برنامه‌نویسیان دنیای متن‌باز، پیوسته در حال افزودن قابلیت‌ها و امکانات جدید به زبان پایتون هستند. پایتون مجهز به بیش از ۲۹۰ هزار بسته (Package) است که در وب‌سایت فهرست بسته‌های پایتون (Python Package Index | PyPi) در دسترس هستند.

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

۱. NamedTuple

NamedTuple‌ها نوع شی‌هایی سبُک هستند که ایجادشان ساده است. NamedTuple یک تابع کارخانه (Factory Function) به حساب می‌آید که در ماژول Collections در دسترس است. در صورتی که نیاز به کلاسی برای مدیریت داده‌ها وجود داشته باشد، می‌توان استفاده از NamedTuple‌ها را به عنوان جایگزین در نظر گرفت.

from collections import namedtuple

Coordinate = namedtuple("Coordinate", "longitude latitude")
location = Coordinate(90, 37.5)
print("location:", location)

# accessing attributes with dot notation
print(location.longitude, location.latitude)

خروجی کدهای فوق به صورت زیر است:

Output:
location: Coordinate(longitude=90, latitude=37.5)
(۹۰, ۳۷٫۵)

ایجاد یک کلاس NamedTuple‌ ساده و سر راست است و نیازی به نوشتن کدهای تکراری برای کلاس‌های سفارشی نخواهد بود.

۲. گزاره‌های For…Else

همه برنامه‌نویسان می‌دانند که از گزاره Else به همراه دستور شرطی If استفاده می‌شود. علاوه بر آن، می‌توان از گزاره Else در یک حلقه For هم استفاده کرد. در گزاره «For…Else» بخش Else در صورتی اجرا می‌شود که تکرار حلقه For کامل شده باشد. در صورتی که تکرار در حلقه For بنابر گزاره break بشکند و کامل نشود، گزاره Else اجرا نخواهد شد.

#case 1
for letter in 'foo':
    print(letter)
else:
    print("All letters have been printed")

#case 2
for letter in 'foo':
    print(letter)
    if letter == 'o':
        break
else:
    print("Letters have been printed")

خروجی کدهای فوق به صورت زیر است:

Output:
#case 1
f
o
o
All letters have been printed
#case 2
f
o

در کدهای فوق و در قسمت Case 2، گزاره Else به دلیل اجرای گزاره Break، اجرا نشده است.

۳. باز کردن آرگومان

در حین فراخوانی تابع، وقتی نیاز به ارجاع آرگومانی به تابع وجود داشته باشد که این آرگومان چندین پارامتر یا آرگومان را دریافت می‌کند، معمولاً در چنین مواقعی آرگومان‌ها جداگانه ارجاع داده می‌شوند. اما در پایتون، می‌توان با استفاده از «*» و «**» یک لیست یا دیکشنری را به عنوان آرگومان تابع در زمان فراخوانی تابع ارجاع داد.

def total(a, b, c):
    return a+b+c
list1 = [1,2,3]
print(total(*list1))
Output:
۶

پایتون به صورت بومی یک لیست یا تاپل یا دیکشنری را در زمان ارجاع به یک تابع باز نمی‌کند و استفاده از «*» و «**» برای ارجاع موفقیت‌آمیز آن‌ها به یک تابع ضروری است.

۴. چاپ بهتر در خروجی با pprint

pprint یک ماژول داخلی (Built-In) و قابل دسترسی در کتابخانه استاندارد پایتون است. نام pprint برگرفته از عبارت «Pretty Printer» به معنی «چاپ زیبا» است. همان‌طور که از نامش پیداست، این ماژول برای چاپ داده‌ها و ساختارهای داده قراردادی پایتون در یک قالب بهتر استفاده می‌شود و خواندنش ساده‌تر است و ظاهر زیبا‌تری دارد. ماژول pprint داده‌ها را با قالب‌بندی بهتر و ظاهری خواناتر در خروجی چاپ می‌کند. داده‌هایی که با pprint چاپ می‌شوند، نسبت به تابع داخلی و پیش‌فرض print خواناتر هستند.

from pprint import pprint
response = [ 
    {"status": 200 , "result": [1,2,3,4,5]},
    {"status": "OK", "result": ['Hello', 'World']},
    {"status": 404, "result": "Data not found"}
]

#print with print function
print(response)

#print with pprint function
pprint(response)

خروجی کدهای فوق به صورت زیر است:

Output:
#print function
[{'status': 200, 'result': [1, 2, 3, 4, 5]}, {'status': 'OK', 'result': ['Hello', 'World']}, {'status': 404, 'result': 'Data not found'}]
#pprint function
[{'result': [1, 2, 3, 4, 5], 'status': 200},
 {'result': ['Hello', 'World'], 'status': 'OK'},
 {'result': 'Data not found', 'status': 404}]

می‌توان ملاحظه کرد که قالب خروجی تابع pprint بسیار خواناتر و تمیزتر است.

۵. شمارش با Enum

در پایتون، شمارش (Enumeration) را می‌توان با استفاده از ماژول Enum انجام داد. شمارش برای تعریف یک نوع ثابت (Immutable) و مجموعه مقادیر ثابت مرتبطی استفاده می‌شود که ممکن است معنی مشابهی نداشته باشند. یکی از مثال‌هایی از چنین مقادیری روزهای هفته (یکشنبه تا شنبه) هستند. 

from enum import Enum
Season = Enum('Season', 'winter summer spring autumn')
print(Season.summer.name)
print(Season.summer.value)

#using class
class Season(Enum):
    winter = 1
    summer = 2
    spring = 3
    autumn = 4
print(Season.winter.name)

خروجی کدهای فوق به صورت زیر است:

Output:
summer
۲
winter
۱

جمع‌بندی

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

منبع [+]

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *