چند قابلیت وجود دارند که به نسخه 3.8 پایتون اضافه شده‌اند. برخی از این قابلیت‌ها بسیار شگفت‌انگیز هستند. در این مقاله برخی از قابلیت‌های جدید پایتون 3.8 را بررسی می‌کنیم که باید با آن‌ها آشنا باشید.

انتساب عبارت‌ها با =:

این عملگر به نام عملگر walrus نیز شناخته می‌شود. در این عملگر مقدارها به عنوان بخشی از عبارت بدون مقداردهی اولیه قبلی آن‌ها به متغیر انتساب می‌یابند.

if (my_variable := get_input()) == 100:
 print(my_variable) #exists now
    perform_action_as_my_variable_is_hundred();

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

پارامترهای صرفاً موقعیتی

اگر می‌خواهید در پایتون به یک تابع اعلام کنید که پارامترهایی را بپذیرد، در این صورت می‌توانید آرگومان‌ها را از طریق موقعیت یا به وسیله کلیدواژه ارسال کنید. اما اگر بخواهیم فراخوانی کننده‌های API خودمان را طوری محدود کنیم که تابع ما را صرفاً با ارسال پارامترها بر اساس موقعیت فراخوانی کنند چطور؟ کارکرد پارامتر صرفاً موقعیتی به همین منظور طراحی شده است:

def add(a, b, c, d=None, /):
    x = a+b+c
    if d is not None:
        x = x+d
    return x

در نتیجه (add(1,2,3 و (add(1,2,3,4 هر دو فراخوانی‌های معتبری هستند، با این حال (add(a=1,b=2,c=3 یا (add(1,2,3,d=4 هر دو فراخوانی‌های غیر معتبری هستند.

برای سهولت دیباگ، f-string اینک از = پشتیبانی می‌کند

اکنون توصیفگر = می‌تواند به f-string–ها اضافه شود. f-string- ها به شکل {'f'{expr= هستند، به ‘=’ دقت کنید. علامت تساوی می‌تواند به ارزیابی عبارت کمک کند.

input = 100
output = 50
print(f'{input-output=}')

کد فوق خروجی زیر را نمایش می‌دهد:

100-50=50

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

functools.lru_cache می‌تواند به عنوان یک دکوراتور اضافه شود

functools.lru_cache برای فراخوانی‌های بازگشتی بسیار عالی است. از یک دیکشنری برای کش کردن نتایج استفاده می‌شود. می‌توانیم دکوراتور functools.lru_cache را اضافه کنیم:

@lru_cache
def my_function(input):
    some io bound or recursive function

پایتون 3.8

توالی معکوس

برخی اوقات لازم است که یک تکرارکننده را معکوس کنیم. خوشبختانه ورودی‌های معکوس اینک به شیءهای Dict و dictviews اضافه شده‌اند. آرگومان ورودی در تابع معکوس باید یک تابع ()__reversed__ داشته باشد یا باید متد ()__len__ و __()getitem__ را داشته باشد که آرگومان‌هایشان از 0 آغاز می‌شوند.

به این ترتیب با برخی از جدیدترین تغییرات نسخه پایتون 3.8 آشنا شدیم. امیدواریم از مطالعه این مطلب لذت برده باشید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

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