Programming
این پکیج ۲۴ سال پیش به پایتون اضافه شده. خیلی مبهمه. معلوم نیست شوخیه یا سوتیه. عکس سمت راست کدیه که واسه پرینت شدن متن توی عکس سمت چپ نوشته شده اسم پکیج: this
اسم الگوریتمی که واسه مبهم سازی استفاده کرده ROT13 هست، اگه کسی دوست داشت بدونه.
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
همونطور که شاید بدونید رشته ها مثل لیستا تو رم ذخیره میشن
هر کاراکتر جدا ذخیره میشه و آخر سر یه رشته ساخته میشه که رفرنس همه این کاراکترا رو یه جا تو رم ذخیره کنه
حالا پایتون یه سیستم به اسم داوطلب سازی (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 داره و مقدار جدیدی میذاره تو لیست مربوط به خروجی تابع.
حالا از قضا، وقتی بخوایم خروجی تابع رو بگیریم، پایتون همیشه آخرین آیتم لیست خروجی اون تابع رو برمیگردونه.
واسه همینه که این قضیه پیش میاد.
عبارت return درواقع مستقیم مقدار برنمیگردونه. درعوض یه لیستی برای خروجی تابع میسازه و مقدار رو میذاره اون تو و میگرده دنبال عبارت های استثنایی که حتما باید اجرا بشن مثل همین عبارت finally.
حالا تو این مورد، خود بخش finally هم یه عبارت return داره و مقدار جدیدی میذاره تو لیست مربوط به خروجی تابع.
حالا از قضا، وقتی بخوایم خروجی تابع رو بگیریم، پایتون همیشه آخرین آیتم لیست خروجی اون تابع رو برمیگردونه.
واسه همینه که این قضیه پیش میاد.
Programming
این قضیه توی خیلی از زبونا مثل جاواسکریپت هست و یه سری تو توییتر هر از چندگاهی درموردش توییت میزنن.
This media is not supported in your browser
VIEW IN TELEGRAM
حالا این که تکراریه احتمالا تو کانالای دیگه هم دیدید ولی بذارید یه چیز جدید بهش اضافه کنم
ولی جدا اگه کسی درمورد اهمیت مارکتینگ شک کرد، کانال ما رو براش بفرستید و بهش نشون بدید هرچقدر هم که محتوات متفاوت باشه تا مارکتینگ نداشته باشی فیدبک نمیگیری. (حالا یه چندتا پست گذاشتم دیگه این حرفا چیه)
😁1