Programming
353 subscribers
501 photos
66 videos
50 files
186 links
سایت نداره این کانال اصلا
Download Telegram
👍8👎1
/g/‘s Tech Memes
Video
دنیا قبل هوش مصنوعی یه همچین شکلی بود
Programming
#چالش سطح: آسون >>> a = 256 >>> b = 256 >>> a is b True >>> a = 257 >>> b = 257 >>> a is b False >>> a = 257; b = 257 >>> a is b True پ.ن: اینو احتمالا بیشترتون میدونید دلیلشو و حتی هوش مصنوعی هم میتونه بگه ولی هرکی خلاصه تر بگه فورواردش می‌کنم کانال
وقتی مفسر پایتون اجرا میشه از اعداد -5 تا 256 توی حافظه دستگاه (RAM) ذخیره میشن

این یه جور راه حل پایتون برای افزایش سرعته. هروقت بخواید یه متغیر با مقدار عددی تو این بازه درست کنید، مفسر پایتون واقعا از صفر اون متغیر رو تو حافظه درست نمیکنه چون از قبل تو حافظه یدونه ساخته و فقط متغیر شما رو رفرنسی برای متغیر اصلی خودش میکنه
به همین خاطره که:
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False


البته پیاده سازی این سیستم بهینه سازی بسته به ورژن پایتون، نوع سیستم عامل و چیزای دیگه ممکنه متفاوت بشه و به همین خاطر کدهای زیر ممکنه نتیجه متفاوتی روی پایتون سیستم شما بده:
>>> a, b = 257, 257
>>> a is b # python 3.7
False
>>> a is b # پیاده سازی متفاوت
True
>>> a = 257; b = 257;
>>> a is b
True
🔥1👨‍💻1
Programming
>>> a = "test" >>> b = "test" >>> a is b True >>> a = "test!" >>> b = "test!" >>> a is b False این هم همینطور
برای رشته ها هم یه همچین سیستم بهینه سازی وجود داره منتها یکم فرق داره
همونطور که شاید بدونید رشته ها مثل لیستا تو رم ذخیره میشن
هر کاراکتر جدا ذخیره میشه و آخر سر یه رشته ساخته میشه که رفرنس همه این کاراکترا رو یه جا تو رم ذخیره کنه

حالا پایتون یه سیستم به اسم داوطلب سازی (Interning) داره که میاد کاراکترای "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz" رو از قبل تو حافظه ذخیره میکنه و هر رشته ای که بعدا تو برنامتون بسازید و فقط از این کاراکترا استفاده کنه، دونه دونه کاراکترای از قبل رزرو شده توی رشته شما داوطلب یا جایگزین میشن

شاید من اشتباه برداشت کردم یا توضیح دادم ولی اگه خواستید بیشتر بدونید کد پیاده سازیش تو این لینک هست:
https://github.com/python/cpython/blob/3.6/Objects/codeobject.c#L19
اگه دقت کنید "test!" یه کاراکتر علامت تعجب داره که توی اون بازه نیست
واسه همینه که رفرنس نمیشه و تو یه جای مجزا تو رم ذخیره میشه
👍2
در کل این سیستم حافظه رو فدای سرعت سی پی یو کرده یه جورایی یا شایدم تو بقیه زبانا هم همچین چیزی هست دقیق نمیدونم
واسه همینجور چیزاست که پایتون مصرف منابعش یه سر و گردن از بقیه زبانا بیشتره
این قضیه توی خیلی از زبونا مثل جاواسکریپت هست و یه سری تو توییتر هر از چندگاهی درموردش توییت میزنن.
Programming
این قضیه توی خیلی از زبونا مثل جاواسکریپت هست و یه سری تو توییتر هر از چندگاهی درموردش توییت میزنن.
اولا اینکه بخش finally (finally clause) به طور تضمینی باید تو شرایط مختلف همیشه بعد از try و except و else اجرا بشه.

عبارت return درواقع مستقیم مقدار برنمیگردونه. درعوض یه لیستی برای خروجی تابع میسازه و مقدار رو میذاره اون تو و میگرده دنبال عبارت های استثنایی که حتما باید اجرا بشن مثل همین عبارت finally.

حالا تو این مورد، خود بخش finally هم یه عبارت return داره و مقدار جدیدی میذاره تو لیست مربوط به خروجی تابع.

حالا از قضا، وقتی بخوایم خروجی تابع رو بگیریم، پایتون همیشه آخرین آیتم لیست خروجی اون تابع رو برمیگردونه.

واسه همینه که این قضیه پیش میاد.
حالا این که تکراریه احتمالا تو کانالای دیگه هم دیدید ولی بذارید یه چیز جدید بهش اضافه کنم
این یکیش
اینم دومیش
بفرستید واسه کسایی که ادعاشون میشه (که ویو بگیریم)
ولی جدا اگه کسی درمورد اهمیت مارکتینگ شک کرد، کانال ما رو براش بفرستید و بهش نشون بدید هرچقدر هم که محتوات متفاوت باشه تا مارکتینگ نداشته باشی فیدبک نمیگیری. (حالا یه چندتا پست گذاشتم دیگه این حرفا چیه)
😁1
قضیه چیه یه سری استارتاپا فقط برنامه نویس دختر استخدام میکنن؟