چه چیزهایی Namedtuples در پایتون خوب هستند
چه چیزهایی Namedtuples در پایتون خوب هستند
پایتون با یک نوع کانتینر تخصصی “namedtuple” عرضه می شود که به نظر نمی رسد توجهی را که شایسته است به خود جلب کند. این یکی از آن شگفت انگیز است ویژگی هایی در پایتون که در دید ساده پنهان هستند. Namedtuples می تواند جایگزین بسیار خوبی برای تعریف یک کلاس به صورت دستی باشد. و آنها ویژگی های جالب دیگری دارند که می خواهم آنها را معرفی کنم حال، نام تاپل چیست و چه چیزی آن را بسیار خاص می کند؟ یک راه خوب فکر کردن در مورد نامدوها به این معناست که آنها را بهعنوان پسوندی در نظر بگیرید نوع داده تاپل داخلی شما در این فصل. تاپل های پایتون یک ساختار داده ساده برای گروه بندی دلخواه هستند اشیاء. تاپل ها نیز تغییر ناپذیر هستند – آنها را نمی توان یک بار تغییر داد آنها ایجاد شده اند در اینجا یک مثال کوتاه است:>>> tup >>> tup = (‘hello’, object(), 42) (‘hello’, <object object at 0x105e76b70>, 42) 42 >>> tup[2] >>> tup[2] = 23 “‘tuple’ object does not support item assignment”یکی از نقاط ضعف تاپل های ساده این است که داده هایی که در آنها ذخیره می کنید می توانند تنها با دسترسی به آن از طریق شاخص های عدد صحیح خارج می شود. شما نمی توانید به خصوصیات فردی که در یک تاپل ذخیره شده اند نام دهید. این می تواند تاثیر بگذارد خوانایی کد TypeError: همچنین، یک تاپل همیشه یک ساختار ad-hoc است. اطمینان از این دو سخت است تاپل ها تعداد فیلدهای یکسانی دارند و خصوصیات ذخیره شده یکسانی دارند بر روی آنها این باعث می شود که به راحتی باگ های “لغزش ذهن” را معرفی کنید.
هدف Namedtuples حل این دو مشکل است.
اول از همه، namedtuples، ظروف غیرقابل تغییر هستند، درست مانند معمولی تاپل ها هنگامی که داده ها را در ویژگی سطح بالا در یک namedtuple ذخیره می کنید، شما نمی توانید آن را با به روز رسانی ویژگی تغییر دهید. تمام صفات روی a شی namedtuple از اصل “یک بار بنویس، خیلی ها بخوان” پیروی می کند. علاوه بر این، نامدوپلها، بهخوبی… تاپلهای نامگذاری شده هستند. هر شی ذخیره شده در آنها می تواند از طریق یک منحصر به فرد (قابل خواندن برای انسان) قابل دسترسی باشد. مشخص کننده. این شما را از به خاطر سپردن شاخص های اعداد صحیح رها می کند، یا متوسل شدن به راه حل هایی مانند تعریف ثابت های عدد صحیح به عنوان یادگاری برای نمایه های شما Namedtuples برای نجات در اینجا یک namedtuple به نظر می رسد:>>> Car = namedtuple(‘Car’ , ‘color mileage’)Namedtuples به کتابخانه استاندارد در Python 2.6 اضافه شد. به از آنها استفاده کنید، باید ماژول مجموعه ها را وارد کنید. در بالا به عنوان مثال، من یک نوع داده ساده Car را با دو فیلد تعریف کردم: رنگ و مسافت پیموده شده >>> from collections import namedtuple ممکن است تعجب کنید که چرا من از رشته «ماشین» به عنوان اولین بار عبور می کنم این پارامتر در اسناد پایتون به عنوان “نام نوع” نامیده می شود. این نام کلاس جدیدی است که با فراخوانی ایجاد می شود تابع نام دوگانه آرگومان تابع کارخانه namedtuple در این مثال. از آنجایی که namedtuple هیچ راهی برای دانستن نام متغیر متغیر ندارد، کلاس حاصل را به آن اختصاص می دهیم، باید به صراحت بگوییم docstring و پیاده سازی repr که به صورت خودکار نامگذاری شده است برای ما تولید می کند.نام کلاس را که می خواهیم استفاده کنیم. نام کلاس در
قوانین ارسال دیدگاه در سایت