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
فیلترینگ روی سطح زمین کافی نبود، حالا میخوان به جو زمین هم صادرش کنن