ویژگی های جدید در Python 3.10

1    940eBWdbX F4IBLAzOA

خلاصه ای از جالبترین ویژگی ها در Python 3.10

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


istockphoto 1284202542 1024x1024 1


مطابقت الگوی ساختاری

تطبیق الگوی ساختاری یک ویژگی باورنکردنی است که به پایتون اضافه شده است. ساختار if-else شبیه به مثال زیر را در نظر بگیرید:

In [1]:
http_code = "418"

if http_code == "200":
    print("OK")
elif http_code == "404":
    print("Not Found")
elif http_code == "418":
    print("I'm a teapot")
else:
    print("Code not found")
I'm a teapot

الگوی کلاسیک بالا را میتوان با روشی که در کد پایین ذکر کرده ایم اصلاح نمود. شاید اگر بخواهیم با روشی تطبیقی این ویژگی را شرح دهیم، میتوانیم اسمی مشابه کلید Switch در زبان های برنامه نویسی با پایه سی را برای نسخه جدید زبان Python در نظر بگیریم.

In [ ]:
http_code = "418"

match http_code:
    case "200":
        print("OK")
    case "404":
        print("Not Found")
    case "418":
        print("I'm a teapot")
    case _:
        print("Code not found")
I'm a teapot

این یک عبارت match-case است که ساده و قابل فهم است و پیشتر در زبان پایتون وجود نداشت. اما هنوز نکته خاصی مطرح نشده باشد. چیزی که باعث میشود این کلید خاص شود تطبیق الگوی ساختاری آن است. تطبیق الگوی ساختاری به ما امکان می دهد منطق مورد به مورد مشابه را انجام دهیم ، اما بر اساس اینکه آیا ساختار شی مقایسه ای ما با یک الگوی داده شده مثلا نوع خاصی از ساختار داده، مطابقت دارد. اجازه دهید دو متغیر دیکشنری با ساختار مختلف تعریف کنیم:

In [1]:
dict_a = {
    'id': 1,
    'meta': {
        'source': 'abc',
        'location': 'west'
    }
}
In [2]:
dict_b = {
    'id': 2,
    'source': 'def',
    'location': 'west'
}

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

In [2]:
# loop through both dictionaries and a 'test'
for d in [dict_a, dict_b, 'test']:
    match d:
        case {'id': ident,
              'meta': {'source': source,
                       'location': loc}}:
            print(ident, source, loc)
        case {'id': ident,
              'source': source,
              'location': loc}:
            print(ident, source, loc)
        case _:
            print('no match')
1 abc west
2 def west
no match

فکر میکنم اکنون این ویژگی برای شما جذاب شده باشد. من قبلاً این مورد را برای پردازش داده ها بسیار مفید میدانستم. نمونه ای از آن را می توانید در ویدیویی که در این صفحه قرار دارد در زمان 15:22 پیدا کنید.


کنترل محتوای داخل پرانتز

تغییر کوچکتری که ناشی از یک تغییر دیگر بسیار بزرگ در Python 3.9 است در قالب چیزی به نام پارسر (parser) معرفی شده است.تجزیه کننده یا parser قبلی python محدودیت های زیادی داشت.این باعث محدود شدن محیط های توسعه پایتون می شد که کدام قاعده نحوی را می توانند مجاز بدانند. تجزیه کننده مبتنی بر PEG Python 3.9 این موانع را برطرف نموده است.در طولانی مدت می تواند به نحو ظریف تری این پروسه را طی کند. اولین مثال ما برای این تغییر ،کنترل محتوای داخل پرانتز است. قبل از Python 3.9 ، می توانستیم برای باز کردن دو یا چند جریان ورودی / خروجی فایل چیزی شبیه به این بنویسیم:

In [1]:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout:
    fout.write(fin.read())

درست است که این مدل کدنویسی صحیح است اما با قالب رایج و حرفه ای پایتون فاصله دارد. با این تجزیه کننده جدید PEG، اکنون می توانیم این خط را با استفاده از پرانتز مانند چندین خط تقسیم کنیم. به مثال زیر توجه کنید:

with (open('file1.txt', 'r') as fin,
      open('file2.txt', 'w') as fout):
    fout.write(fin.read())

حالا این کد مبدل به یک نگاشت حرفه ای Python شد. یک نکته ظریف در این ویژگی جدید وجود دارد. البته شاید نتوانیم ادعا کنیم این ویژگی تماما جدید است… این مدل کدنویسی در Python 3.9 هم مشابه پایتون 3.1 قابل استفاده است اما در نسخه 3.1 رسمی شده است.


پردازشگر جدید خطا ها

امیدوارم بلافاصله بعد از دیدن این خطا مشغول جست و جوی آن در گوگل نشده باشید. 

SyntaxError: unexpected EOF while parsing

نتیجه شماره یک در Google هنگام برخوردن به این دسته از خطاها حاکی از آن است که یقینا بسیاری از ما در برخی موارد این کار را انجام داده ایم.


1 qB5SUFu4E9az49Ag8d7ngg

این یک پیام خطای واضح نیست و پایتون پر از پیام های خطای اینچنینی است. خوشبختانه  توسعه دهندگانی این خطا ها را تشخیص داده اند و به معرفی و تفسیر آن در اینترنت پرداخته اند که باعث بهبود بسیاری از خطا های احتمالی بعدی شده است.


1 cARf3h5H1z3Ug81ksPqRjw


1 iVrxB9xUcqrdKACqLVU5Vg


1 cARf3h5H1z3Ug81ksPqRjw 1


1 fJO C6XxBXqXRxe1loz4yA


1 6d VF0Td9eOL9k d0P6uWQ


1 5mLBsB9GkSOvguyJQowgCg


ویدیوی مربوط به معرفی امکانات جدید python 3.10

admin
admin

  • چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

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

مطالب مرتبط

لینک کوتاه نوشته
0

سبد خرید چسبان