چهار تغییر standard library در Python 3.15 از نگاه Rodrigo Girão Serrão

چرا مهم است

اگر تو با JSON یا task‌های هم‌زمان کار می‌کنی، این قابلیت‌ها به کارهای روزمره‌ات مربوط‌اند. مثال object_hook نشان می‌دهد می‌توانی هنگام خواندن JSON، نتیجه تبدیل object‌ها را کنترل کنی، حتی وقتی داخل هم قرار دارند.

قبل از خواندن، این‌ها را بدان۳ مفهوم
standard library

مجموعه module‌ها و ابزارهایی که همراه یک زبان ارائه می‌شوند و برای استفاده از آن‌ها نیازی به نصب package جداگانه نیست.

بیشتر درباره این مفهوم

callable

یک object که می‌توان آن را مانند تابع فراخوانی کرد؛ مثلاً تابعی که به‌عنوان ورودی به تابع دیگری داده می‌شود.

بیشتر درباره این مفهوم

object_hook

یک parameter برای تعیین callable‌ای که dictionary حاصل از خواندن هر JSON object را دریافت می‌کند و نتیجه بازگشتی آن جایگزین آن dictionary می‌شود.

بیشتر درباره این مفهوم

Rodrigo Girão Serrão در مطلبی درباره Python 3.15، چهار تغییر در standard library را برجسته کرده است. بخش در دسترس مطلب، فهرست این تغییرها را ارائه می‌کند و سپس به توضیح رفتار object_hook در json.load می‌پردازد؛ جزئیات سه مورد دیگر در این بخش نیامده است.

در توضیح json.load، نویسنده object_hook را یک parameter معرفی می‌کند که یک callable می‌گیرد. هر JSON object که هنگام خواندن داده به dictionary تبدیل می‌شود، به این callable داده می‌شود و نتیجه بازگشتی آن جای dictionary را می‌گیرد. بنابراین نقش object_hook فقط مشاهده داده نیست؛ می‌تواند نتیجه تبدیل هر object را هم تعیین کند.

مثال مطلب یک فایل JSON با اطلاعات نام و علاقه‌مندی‌هاست. تابعی که به object_hook داده شده، dictionary دریافتی را چاپ می‌کند و همان را برمی‌گرداند. خروجی نشان می‌دهد این تابع ابتدا برای dictionary داخلیِ نام و سپس برای dictionary بیرونی فراخوانی می‌شود. نویسنده همچنین به کاربرد ترکیب این قابلیت با frozendict اشاره می‌کند، اما توضیح آن در بخش موجود دیده نمی‌شود.

سه مورد دیگر عبارت‌اند از ماژول math.integer برای تابع‌های محاسباتی مربوط به عددهای صحیح، تابع re.prefixmatch برای روشن‌تر کردن ابهام رایج در استفاده از re.match و asyncio.TaskGroup.cancel برای لغو همه task‌های یک TaskGroup. در متن در دسترس، برای این سه مورد مثال یا توضیح بیشتری ارائه نشده است.

نکته کلیدی

برای فهم object_hook، مثل مثال مطلب یک callable بساز که ورودی‌اش را چاپ کند و همان را برگرداند. با یک JSON تودرتو امتحانش کن تا خودت ببینی dictionary داخلی پیش از dictionary بیرونی به آن داده می‌شود.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)