خودشه! ما از آرگومان هاي پيش فرض براي ايجاد توابع ناشناس براي دستيابي به رفتار دلخواه استفاده مي كنيم. برخي اين را زيبا اشتباهات رايج برنامه نويسي مي نامند برخي آن را ظريف مي نامند. برخي از آن متنفرند. اما اگر شما يك توسعه دهنده پايتون هستيد ، درك اين نكته مهم است.
اشتباه رايج شماره 7: ايجاد وابستگي هاي مدول مدور
فرض كنيد شما دو فايل a.py و b.py داريد كه هر كدام براي ديگري اهميت دارد ، به شرح زير:
خيلي خوب كار كرد. شايد او شما را شگفت زده كرد. از اين گذشته ، ما يك واردات دايره اي داريم كه احتمالاً بايد مشكل ساز باشد ، اشتباهات رايج برنامه نويسي درست است؟
پاسخ اين است كه صرف وجود واردات دايره اي چنين مشكلي در پايتون نيست. اگر ماژولي قبلاً وارد شده است ، پايتون به اندازه كافي هوشمند است كه سعي نكند دوباره آن را وارد كند. با اين حال ، بسته به جايي كه هر ماژول سعي در دسترسي به توابع يا متغيرهاي تعريف شده در ديگري دارد ، ممكن است مشكلاتي داشته باشيد.
بنابراين به مثال خود بازگرديم ، وقتي.را وارد كرديم ، مشكلي در وارد كردن. نداشتم ، زيرا براي تعريف خود در زمان وارد كردن به چيزي از نياز ندارد. تنها اشتباهات رايج برنامه نويسي مرجع در به a ، ناميده مي شود. اما آن فراخواني در است و هيچ چيز در را فرا نمي خواند. بنابراين ، زندگي زيباست.
اوه اوه اين خوب نيست! مشكل در اينجا اين است كه ، در فرايند وارد كردن ، سعي مي كند را وارد كند ، كه در نتيجه f () را فرا مي خواند ، كه به نوبه خود سعي مي كند به x. اما هنوز تعريف نشده است. از اين رو استثنا حداقل يك راه حل براي اين امر بسيار بي اهميت است. به سادگي. را براي وارد كردن a.تغيير دهيد:
# وارد كنيد اين فقط زماني كه فراخواني شود
ايرانيان سايبر ارزيابي مي شود وقتي مهم است ، همه چيز خوب است: براي اولين بار از زماني كه ماژول 'a' فراخواني مي كند چاپ 'در پايان چاپ مي شود1 بار دوم چاپ شده است ، اين يكي تماس ما با استاشتباه رايج شماره 8: برخورد نام ها با ماژول هاي كتابخانه استاندارد پايتون
يكي از مزاياي پايتون تعداد زيادي ماژول كتابخانه است كه از ابتدا به ارمغان مي آورد. اما در نتيجه ، اگر آگاهانه از اين كار اجتناب نمي كنيد ، برخورد نام بين يك نام ماژول و ماژولي با همين نام در كتابخانه استاندارد موجود در پايتون چندان دشوار نيست ( به عنوان مثال ، ممكن است ماژولي به نام در كد خود داشته اشتباهات رايج برنامه نويسي باشيد ،
كه با ماژول كتابخانه استاندارد با همين نام در تعارض است). اين مي تواند منجر به مشكلات بسيار تهاجمي شود ، مانند وارد كردن كتابخانه ديگري كه به نوبه خود سعي مي كند نسخه استاندارد كتابخانه پايتون يك ماژول را وارد كند ، اما از آنجا كه شما قبلاً ماژولي با همين نام داريد ،
بسته ديگر نسخه شما را به اشتباه وارد مي كند كه در كتابخانه استاندارد پايتون قرار دارد و در اينجا جدي ترين خطاها رخ مي دهد. بنابراين ، بايد مراقب باشيد كه از اسامي مشابه ماژول هاي كتابخانه استاندارد پايتون استفاده نكنيد. تغيير نام يك اشتباهات رايج برنامه نويسي ماژول در بسته شما براي شما بسيار آسان تر از ارائه يك پيشنهاد) براي درخواست تغيير نام بالادستي و تأييد آن است.
اشتباه رايج شماره 9: نمي توان با تفاوت هاي بين پايتون 2 و پايتون 3 كنار آمد تازه اينجا چه اتفاقي افتاده؟ "مشكل" اين است كه در پايتون 3 شيء استثنا خارج از محدوده بلوك جز قابل دسترسي نيست. (دليل اين امر اين است كه در غير اينصورت يك چرخه مرجع با قاب پشته در حافظه تا زمان جمع آوري زباله كار مي كند و منابع حافظه را پاك مي كند.
اشتباه كدنويسي اطلاعات فني بيشتر در اشتباهات رايج برنامه نويسي اين مورد در اينجا موجود است)