من ربات ترجمیار هستم و خلاصه مقالات علمی رو به صورت خودکار ترجمه میکنم. متن کامل مقالات رو میتونین به صورت ترجمه شده از لینکی که در پایین پست قرار میگیره بخونین
موارد جدید در پایتون ۳.۱۰ چیست؟
منتشرشده در: towardsdatascienceبه تاریخ ۹ ژوئن ۲۰۲۱
لینک منبع What’s New in Python 3.10?
توسعه پایتون ۳.۱۰ تثبیت شدهاست و ما در نهایت میتوانیم تمامی ویژگیهای جدیدی که در نسخه نهایی گنجانده خواهند شد را آزمایش کنیم.
ما برخی از جالبترین موارد اضافهشده به تطبیق الگوی پایتون-ساختاری، مدیران زمینه پرانتزی، تایپ بیشتر، و پیامهای خطای جدید و بهبود یافته را پوشش خواهیم داد.
تطبیق الگوی ساختاری
تطبیق الگوی ساختاری یک ویژگی باور نکردنی برای اضافه شدن به پایتون است -واقعا عالی است.
یک عبارت if-else را تصور کنید که به این شکل است:
If-else logic in Python 3.9
شما آن را در نظر میگیرید و نحو را تغییر میدهید بنابراین بیشتر شبیه به این است:
این یک عبارت جدید match-case است -خوب است، اما چیز خاصی نیست -
چیزی که بیانیه match-case را بسیار جالب میکند چیزی است که تطبیق الگوی ساختاری نامیده میشود.
تطبیق الگوی ساختاری به ما این امکان را میدهد تا منطق match-case مشابه را اجرا کنیم، اما براساس اینکه آیا ساختار هدف مقایسهای ما با یک الگوی معین مطابقت دارد یا خیر.
پس بیایید دو فرهنگ لغت را تعریف کنیم، که هر دو ساختار متفاوتی دارند.
اکنون ، می توانیم الگویی برای مطابقت با dict_a بنویسیم:
و الگویی که با dict_b نیز مطابقت داشته باشد:
اگر هر دوی اینها را در یک عبارت match-case کنار هم بگذاریم، در کنار آنچه که else / همه با case _-به دست میآوریم:
خیلی باحاله درسته؟
مدیران زمینه پرانتزی
یک تغییر کوچکتر که از یک تغییر بسیار بزرگتر ناشی میشود که با پایتون ۳.۹ ظاهر شد-یک تجزیهگر جدید مبتنی بر PEG.
این تجزیهگر پایتون پیشین دارای محدودیتهای بسیاری بود، که باعث محدود شدن افواج پایتون میشد که در آن نحو را مجاز میدانستند.
تجزیهگر مبتنی بر PEG پایتون ۳.۹ این موانع را حذف کرد، که بلند مدت میتواند به نحو بهتری منجر شود-اولین مثال ما از این تغییر، مدیران زمینه پرانتزی جدید است.
پیش از پایتون ۳.۹، ما میتوانیم چیزی شبیه این بنویسیم تا دو جریان I / O (یا بیشتر) را باز کنیم:
قبل از این تجزیهگر جدید، تنها در صورتی میتوانستیم دو مدیر زمینه را انتخاب کنیم که هر دوی آنها در یک خط باشند.
در حقیقت، خط اول خیلی طولانی است. اما به دلیل محدودیتهای تجزیه کننده، تنها راهی که میتوانیم این خط را در چندین خط تقسیم کنیم، استفاده از کاراکتر \ خط ادامه بود:
این کار جواب میدهد، اما Pythonic نیست. با این تجزیهگر جدید، اکنون میتوانیم این خط را در چند خط با استفاده از پرانتزهایی مانند این تقسیم کنیم:
که pythonic است.
حالا، قبل از این که حرکت کنیم-یک چیز عجیب و غریب جزئی در این ویژگی جدید وجود دارد. کاملا نو نیست …
اگر بنویسیم:
در پایتون ۳.۹-کار میکند. به این دلیل که تجزیهگر جدید این نحو را فعال کرد، با وجود اینکه رسما تا پایتون ۳.۱۰ پشتیبانی نمیشد.
تایپ بیشتر
بهروزرسانی های بیشتری نیز برای ویژگیهای تایپ پایتون وجود دارد، که اگر علاقهمند باشید، من در اینجا با جزئیات بیشتر در مورد آنها نوشتهام.
به راحتی جالبترین مورد در اینجا گنجاندن یک اپراتور جدید است که برای انواع مانند یک منطق OR رفتار میکند، چیزی که قبلاً از روش Union برای آن استفاده میکردیم:
روش اتحادیه برای انواع در ۳.۹
اکنون، نیازی به نوشتن from typing import Union نداریم ، و Union[int, float] به int | float ساده شده است - که بسیار تمیزتر به نظر می رسد:
پیغامهای خطای بهتر
به من بگویید که اولین باری که این را دیدید مستقیم به سمت Google نرفتید:
SyntaxError: unexpected EOF while parsing
نتیجه شماره یک در Googleهنگام ورود به SyntaxErrorحاکی از آن است که مطمئناً بسیاری از ما در مقطعی این کار را انجام دادهایم.
این یک پیام خطای واضح نیست، و پایتون پر از پیامهای خطای کمتر از ایدهآل است. خوشبختانه، کسی متوجه شد-و بسیاری از این پیامها به طور قابلتوجهی بهبود یافتند.
پرانتز گمشده با ۳.۹ (چپ) و ۳.۱۰ (راست) زنجیره باز شده با ۳.۹ و ۳.۱۰ عملگر تخصیص به جای عملگر مقایسه مورد استفاده با ۳.۹ و ۳.۱۰
چند تغییر دیگر نیز وجود دارد که در لیست تغییرات رسمی ذکر شدهاند-اما به نظر نمیرسد در طول آزمایش نشان داده شوند، از جمله:
from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
در اینجا AttributeError مانند قبل است اما با یک نام مشخصه پیشنهادی اضافهشده - namedtoplo به عنوان نمونه بالقوه از مشخصه namedtuple شناخته میشود.
به همین ترتیب، ما بهبود مشابهی را برای پیامهای NameError میبینیم:
new_var = 5
print(new_vr)> NameError: name 'new_vr' is not defined. Did you mean: new_var?
بهروزرسانی های دیگری نیز برای خطا دادن پیغامها وجود دارد! .
بنابراین، آنها برخی از ویژگیهای کلیدی جدید هستند که با پایتون ۳.۱۰ معرفی شدهاند!
انتظار میرود که انتشار کامل آن در چهارم اکتبر ۲۰۲۱ انجام شود، از الآن تا آن زمان، دستههای پایتون بر روی بهبود آنچه که قبلا اضافه شدهاست کار خواهند کرد -اما هیچ ویژگی جدیدی معرفی نخواهد شد.اگر می خواهید خودتان آن را بررسی کنید ، 3.10.0b1 را می توانید از اینجا دانلود کنید.
امیدوارم از این مقاله لذت برده باشید!
با تشکر برای خواندن.
این متن با استفاده از ربات ترجمه مقالات دیتاساینس ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه میتواند دارای برخی اشکالات ترجمه باشد.
مقالات لینکشده در این متن میتوانند به صورت رایگان با استفاده از مقالهخوان ترجمیار به فارسی مطالعه شوند.
مطلبی دیگر از این انتشارات
دانشمندان بهترین راه برای آرام کردن نوزاد گریان را فاش کردند
مطلبی دیگر از این انتشارات
همکاری اپل و گوگل در تشخیص بیماری کرونا
مطلبی دیگر از این انتشارات
۳ نکته اساسی در یادگیری علوم داده