🐍 Python & Raspberry 🐍
8.21K subscribers
1.92K photos
125 videos
623 files
1.23K links
Python- Raspberry Pi-AI-IOT
ادمین : فرهاد ناصری زاده
@farhad_naserizadeh
@farhad3412

گروه پایتون
@Python_QA
تبادل
@mmtahmasbi
کانال مرتبط
@new_mathematical
@micropython_iot
@c_micro
اینستاگرام
http://Instagram.com/python_raspberry
Download Telegram
Data Science Concepts


@raspberry_python
#ارسالی_شما #سورس
سورس ربات تبلیغاتی و اکانت سیور 📥 :
ᴅᴀʀᴋ ᴀᴅᴠᴇʀᴛɪᴢᴇʀ :

- سیو کردن اکانت ها
- تبلیغات در پیوی و گروه ها با بنر های شما
- استارت ربات با رفرال ایدی
- جوین و لفت دادن از گروه و کانال
- پاکسازی اکانت ها از کانال ها و گروه های مزاحم
- ری اکت کردن پیام ها با ایموجی مورد نظر
- تنظیم هویت فیک بر روی اکانت
( عکس ، بیو ، نام ، یوزرنیم )

و صد ها قابلیت دیگر
( که توی readme.md میتونید بخونید )



https://github.com/amiralirj/DarkAdvertizer
Soon may the wellerman come
To bring us sugar and tea and rum 😋


©@raspberry_python
نتایج Python Developer Survey سال 2021 هم رسید 😁

https://lp.jetbrains.com/python-developers-survey-2021/


©@raspberry_python
✔️ سوال.

میخوایم از یک iterable به صورت n تا n تا عضو بگیریم، مثلا یه لیست داریم از عدد ۱ تا ۱۰۰ توش هست میخوایم با هر بار next زدن یه لیست ۱۰ تایی ازش بهمون داده بشه.

از کدوم روش استفاده میکنید؟ چرا؟


©@raspberry_python
سوال بالا
Anonymous Poll
67%
Generator 🐪
33%
Class 🐫
به نظرت خروجی کد بالا میتونه کدوم یک از موارد زیر باشه؟؟👇🏻👇🏻
گزینه درست رو بر اساس عکس بالا انتخاب کن
Anonymous Quiz
6%
-1
18%
False
47%
True
24%
Erorr
5%
None
✔️ خب سلام
سوال که میدونیم چیه!
حقیقتش نمیشه به این سوال جواب قطعی داد که یا قطعا generator یا قطعا نوشتن راه‌حل با یک کلاس و پیاده‌سازی یک iterable و iterator

اما بیاید از چند جهت بررسی‌اش کنیم:
• سادگی و خوانا بودن:
والا من که نمی‌تونم بگم کدوم ساده‌تر یا پیچیده‌تره، اما اگه اینجوری به قضیه نگاه کنیم که جنریتور فقط یک تابع هست و یک حلقه توش داره و من می‌دونم که وقتی اون iter تموم بشه بهم excption عه StopIteration برمیگردونه، فهمیدم چیه!

یا از اون طرف اون کلاس، اگه من بدونم که کار داندر ایتر و داندر next چیه؟‌ (که از اسمشون میشه فهمید که یه ربطی به توابع iter و next دارن) و اگه یک کلاسی اینا رو داشته باشه چی میشه، مسئله رو فهمیدم.

*بنظر من* جنریتور با نگاه بالا ساده‌تره چون داندر متد‌ها رو معمولا دیرتر از توابع و اینا یاد میگیریم!

• اما یکی از شاخص‌هاش سادگی یا پیچیدگی کد رو میشه با نگاه کردن به کد‌ها بررسی کرد. منظورم دقیقا نگاه کردن بهشون هست و نه خوندنش.

اگر همینجوری که کد رو دارید نگاه میکنید، کد رو ۹۰ درجه به سمت چپ بچرخونید و با تورفتگی‌ها یک کوه بکشید، می‌بینید که میزان قله و دره‌‌ها و کنار هم بودن‌شون در کد generator بیشتره اما کد کلاس flat تره.
توی ذن پایتون هم میخونیم:
Flat is better than nested!
پس *بنظر من* با نگاه بالا اینجا کد کلاس ساده تره.
و در کل نمیشه گفت حتما این ساده‌تره یا اون 👍

• کارایی:
این دو نمونه کد *دقیقا* یک کار رو انجام میدن و یک خروجی دارن، هر دو lazy هستن، هر دو اون موقعی که ما روشون next میزنیم نتایج رو محاسبه میکنن و بهمون میدن و ...
اما اما اما وقتی من از کلاس استفاده میکنم میتونم اون کلاس رو توسعه‌اش بدم و کارایی‌هاش و قابلیت‌هاش رو بیشتر کنم تا فقط یک NGiver خالی نباشه، اما این در مورد generator صادق نیست.

• حجم و اندازه آبجکت‌های درست شده:
مشخصه که جنریتور در کل یک آبجکته که می‌دونه بالاخره باید با خودش چی کار کنه!

اما کلاس کلا قضیه‌ش میکنه، هم خودش آبجکته که namespace داره و ... و instanceش هم namespace خودش رو داره و مشخصا حجم بیشتری میخواد.

• فرق بین‌شون بعد یک بار iteration:

• سرعت:
توی ۱۰۰ هزار بار execution (و بالاتر) راه‌حل generator سرعتش بیشتره




©@raspberry_python
.
"دقت"، "وقت" و "زمان"
.
یکی از موانع "پیوستن"، دقت وسواسگونه برای پیشگیری از خطا و اشتباه است. اینک این سوال پیش می آید که دقت زیاد چه مشکلی دارد و چه اشکال دارد که ما در مورد موضوعی، قبل از هرتصمیمی و هر پیوستنی، زمان زیادی را به تأمل و تدقیق در مورد آن بگذرانیم؟
.
مشکل اساسی در این مورد، همانا مسئله "زمان" و "وقت" است. واقعیت این است که دقت زیاد در مورد پیوستن یا نپیوستن و گرفتن یا نگرفتن یک تصمیم، ذاتاً ایرادی ندارد اما مسئله این است که در بسیاری مواقع فرصت زمانی ما برای گرفتن یک تصمیم محدود است و فرصت ها معطل تردید ها و دودلی های ما نمی مانند و باصطلاح زمان تصمیم گیری می گذرد و باینترتیب دقت های ما عملاً بلاموضوع می شوند.
"دقت" زمانی ارزش دارد که در تصمیم گیری ما اثر بگذارد، وگرنه اگر ما به بهانه دقت و تأمل، زمان تصمیم گیری را از دست بدهیم و باصطلاح «فرصت را بسوزانیم» که دیگر دقت کردن یا نکردن ما فایده ای نخواهد داشت!
.
از این روست که در هنگام تصمیم گیری برای پیوستن یا نپیوستن، ما با دوگانه "دقت" و "زمان" مواجه هستیم و هر کدام از این دو مقوله اهمیت خودشان را دارند. اهمیتی که باعث می شود تاکید بیش از اندازه بر هرکدام، فرد تصمیم گیرنده را متضرر نماید.
.
مثال ها در این زمینه فراوانند؛ از فردی که برای خرید لباسی آنقدر تاخیر می کند تا کس دیگری آن را می خرد، تا فردی که در ارائه پیشنهاد ازدواج آنقدر دست دست می کند تا اینکه کس دیگری پیشنهاد می دهد و معشوق را به دست می آورد و یا شرکتی که در قبول قراردادی آنقدر تاخیر می کند تا اینکه مناقصه را شرکت دیگری برنده می شود، همه می توانند مثالهایی از این مورد باشند.
.
زمان پذیرش برای یک پیوند و اتخاذ تصمیم، با سرعت در گذر می باشد و زمان مناسب برای اتخاذ یک تصمیم، اصطلاحاً "وقت" نامیده می شود. یعنی در واقع آن بازه زمانی که در طی آن فرصت تصمیم گیری و پیوستن داریم و نیز بهترین زمان برای تصمیم گیری، همان "وقت" مناسب است. بقول حافظ؛
.
صبا گر چاره داری وقت، وقت است
که درد اشتیاقم قصد جان کرد

علیرضا فرنام