نوشتن حلقه های پایتونیک
نوشتن حلقه های پایتونیک
یکی از سادهترین راهها برای شناسایی توسعهدهندهای با پیشینه زبانهای سبک C که اخیرا پایتون را انتخاب کردهاند، این است که ببینید چگونه به عنوان مثال، هر زمان که من یک قطعه کد مانند زیر می بینم، این است مثالی از کسی که سعی می کند پایتون را مانند C یا جاوا بنویسد:my_items = [‘a’, ‘b’, ‘c’] آنها حلقه می نویسند. i = 0 print(my_items[i]) i += 1حالا، میپرسید چه چیزی در مورد این کد «غیرپایتونیک» است؟ دو چیز: ابتدا، ایندکس i را به صورت دستی ردیابی میکند – مقدار اولیه آن را صفر میکند و سپس با دقت آن را در هر تکرار حلقه افزایش دهید. while i < len(my_items): و دوم، از len() برای دریافت اندازه کانتینر my_items استفاده می کند در پایتون میتوانید حلقههایی بنویسید که به طور خودکار هر دوی این مسئولیتها را مدیریت میکنند. این یک ایده عالی است که از آن استفاده کنید. به عنوان مثال، نوشتن حلقه های نامحدود تصادفی در صورت کد شما بسیار سخت تر است نیازی به پیگیری یک شاخص در حال اجرا ندارد. کد را نیز می سازد مختصرتر و در نتیجه خواناتر. به منظور تعیین تعداد دفعات تکرار برای بازسازی این مثال کد اول، با حذف کد شروع می کنم به صورت دستی ایندکس را به روز می کند.
یک راه خوب برای انجام این کار با حلقه for است
در پایتون با استفاده از range() داخلی، می توانم ایندکس ها را به صورت خودکار تولید کنم:range(0, 3)>>> list(range(0, 3)) >>> range(len(my_items)) [0, 1, 2]نوع محدوده نشان دهنده یک دنباله تغییر ناپذیر از اعداد است. آن مزیت نسبت به یک لیست معمولی این است که همیشه به همان اندازه کوچک است مقادیری که دنباله اعداد را نشان می دهند – در عوض، آنها به عنوان عمل می کنند تکرار کننده ها و محاسبه مقادیر توالی در پرواز.1 مقدار حافظه اشیاء محدوده در واقع فرد را ذخیره نمی کنند می تواند از تابع range() استفاده کند و چیزی بنویسد بنابراین، به جای افزایش i دستی در هر تکرار حلقه، من مثل این:print(my_items[i])این بهتره. با این حال، هنوز خیلی پایتونیک نیست و هنوز احساس بیشتری دارد مانند یک ساختار تکراری جاوا نسبت به حلقه پایتون مناسب. چه زمانی کدی را مشاهده می کنید که از range(len(…)) برای تکرار روی یک ظرف استفاده می کند شما معمولا می توانید آن را ساده تر و بهبود بخشید. for i in range(len(my_items)): همانطور که اشاره کردم، در پایتون، حلقههای for در واقع حلقههای «برای هر» هستند می تواند مستقیماً روی آیتم های یک ظرف یا دنباله تکرار شود، بدون آن باید آنها را با فهرست جستجو کنید. من می توانم از این برای ساده کردن این حلقه استفاده کنم حتی بیشتر: print(item)من این راه حل را کاملا پایتونیک می دانم. از چندین ویژگی پیشرفته پایتون استفاده میکند، اما خوب و تمیز باقی میماند و تقریباً میخواند مانند شبه کد از یک کتاب درسی برنامه نویسی.for item in my_items:
قوانین ارسال دیدگاه در سایت