تکرار کننده های زیبا
تکرار کننده های زیبا
من عاشق این هستم که چگونه سینتکس پایتون در مقایسه با بسیاری از آن زیبا و واضح است مثال. این به زیبایی پایتون می گوید که می توانید پایتونیک بخوانید اینطور حلقه بزنید، انگار یک جمله انگلیسی است:numbers = [1, 2, 3] سایر زبان های برنامه نویسی بیایید حلقه for-in فروتنانه را برای print(n)اما ساختارهای حلقه ظریف پایتون در پشت صحنه چگونه کار می کنند؟ حلقه چگونه عناصر منفرد را از شیئی که در حال حلقه زدن است واکشی می کند؟ و چگونه می توانید از همان سبک برنامه نویسی پشتیبانی کنید اشیاء پایتون خودتان؟ for n in numbers: پاسخ این سؤالات را در دستور العمل تکرارکننده Python خواهید یافت: اشیایی که از روش dunder iter و next پشتیبانی می کنند به طور خودکار با حلقه های for-in کار می کنند. اما بیایید همه چیز را قدم به قدم پیش ببریم. درست مثل دکوراتورها، تکرار کننده ها و تکنیک های مربوط به آنها می تواند کاملا محرمانه و پیچیده به نظر برسد در این فصل نحوه نوشتن چندین کلاس پایتون را خواهید دید که از پروتکل iterator پشتیبانی می کنند. آنها به عنوان نمونه های “غیر جادویی” عمل خواهند کرد و پیاده سازی هایی را آزمایش کنید که می توانید بر اساس آنها بسازید و درک خود را عمیق تر کنید.
مکانیک اصلی تکرارکنندهها در پایتون
ابتدا بر روی مکانیک اصلی تکرارکنندهها در پایتون 3 تمرکز خواهیم کرد هر گونه عارضه غیر ضروری را کنار بگذارید، بنابراین می توانید به وضوح ببینید که چگونه تکرار کننده ها در سطح بنیادی رفتار می کنند. نگاه اول. بنابراین، ما به آنها کمک خواهیم کرد. من هر مثال را به سوال حلقه for-in که شروع کردیم گره می زنم که بین پایتون 2 و 3 در مورد تکرار کننده ها وجود دارد.تکرار برای همیشه با. و در پایان این فصل به برخی از تفاوت ها خواهیم پرداخت ما با نوشتن کلاسی که پروتکل bare-bones iter ator را نشان می دهد شروع می کنیم. مثالی که من در اینجا استفاده می کنم ممکن است متفاوت به نظر برسد نمونه هایی را که در سایر آموزش های تکرارکننده دیده اید، اما با من همراه باشید. من فکر می کنم انجام این کار به شما درک کاربردی تری از این موضوع می دهد در چند پاراگراف بعدی کلاسی به نام پیاده سازی می کنیم چگونه تکرار کننده ها در پایتون کار می کنند تکرار کننده ای که می تواند با یک حلقه for-in تکرار شود، مانند:for item in repeater: repeater = Repeater(‘Hello’) print(item)همانطور که از نامش پیداست، نمونههای این کلاس Repeater در صورت تکرار، یک مقدار واحد را تکرار میکنند. پس مثال بالا برای شروع با پیاده سازی، ابتدا آن را تعریف و تشریح می کنیم کلاس تکرار کننده:class Repeater: کد برای همیشه رشته “Hello” را در کنسول چاپ می کند. self.value = value def __iter__(self): def __init__(self, value): return RepeaterIterator(self)در اولین بازرسی، Repeater شبیه یک کلاس پایتون استاندارد به نظر می رسد. اما توجه کنید که چگونه روش iter dunder را نیز شامل می شود. از __iter__؟ این یک کلاس کمکی است که ما نیز باید برای خود تعریف کنیم برای در تکرار مثال برای کار:class RepeaterIterator: شی RepeaterIterator که می سازیم و برمی گردیم چیست self.source = source def __next__(self): def __init__(self, source): return self.source.value
قوانین ارسال دیدگاه در سایت