عـــلـے | Ali.N
200 subscribers
28 photos
8 files
12 links
Just a 20 y/o self-taught programmer in Iran, turning caffeine and chaos into clean Python. Building bots, breaking limits.
Download Telegram
آشنایی با عملگر والروس در پایتون (:=)

تو پایتون 3.8 به بعد یک عملگر جدید اضافه شد به اسم والروس یا := که اجازه می‌ده در حین مقایسه یا شرط، مقداردهی هم انجام بدیم

یعنی بدون اینکه دو بار یک دستور تکرار بشه، هم مقدار دریافت می‌کنیم هم شرط رو چک می‌کنیم

🔸 مثال معمولی (بدون والروس)
password = input('Enter password: ')
while password != '@12345':
password = input('incorrect password, try again: ')
print('welcome admin!')


اینجا ما دو بار دستور input نوشته‌ایم:
یک بار قبل از حلقه، یک بار داخل حلقه

🔸 مثال با عملگر والروس
while (password := input('Enter password: ')) != '@12345':
print('incorrect password, try again')
print('welcome admin')


در این نسخه با کمک عملگر := همزمان:

مقدار ورودی را داخل password قرار می‌دهیم

و همان لحظه آن را با مقدار صحیح مقایسه می‌کنیم

در نتیجه کد کوتاه‌تر، تمیزتر و خوانا‌تر می‌شود

✔️ خلاصه:

عملگر والروس وقتی کاربرد دارد که:

می‌خواهیم مقدار یک تابع (مثل input) را بگیریم

و همان لحظه از آن در شرط استفاده کنیم

بدون اینکه کد تکراری بنویسیم
❤6🔥3🕊1
Revolving Door
Abel Korzeniowski
بیکلام آرامش بخش✨🎼
❤7🕊2🐳1
عـــلـے | Ali.N
#Quiz #Python 👁 مشاهده پاسخ @CodePyOfficial
🧐 کدوم گزینه سریع تر اجرا میشه؟
Final Results
55%
1
45%
2
خب بریم سراغ جواب کوئیز!

علت سریع‌تر بودن پیمایش حلقه داخل تابع، به نحوه‌ی دسترسی پایتون به متغیرها برمی‌گرده

داخل تابع:
متغیر _
و خود range


به صورت Local Variable ذخیره می‌شن

اما خارج از تابع:

این‌ها Global Variable هستن

در پایتون:
دسترسی به Local → سریع‌تر
دسترسی به Global → کندتر


به همین دلیل، وقتی حلقه داخل تابع اجرا میشه، پایتون برای پیدا کردن متغیرها زمان کمتری صرف می‌کنه.

کدی که بیرون تابع اجرا میشه:
داخل فضای Global Namespace قرار داره

پایتون باید مدیریت بیشتری روش انجام بده
(مانند جستجو در namespace، ردیابی و تعامل با ماژول‌ها)

داخل تابع:
محیط اجرا بسته‌تر و ساده‌تره

درباره‌ی Call Stack:

ممکنه فکر کنیم چون تابع Call Stack داره باید کندتر باشه

اما:
هزینه‌ی صدا زدن تابع فقط یک بار پرداخت میشه
در حالی که حلقه 1,000,000 بار اجرا میشه
پس این هزینه در مقایسه با تعداد تکرار حلقه عملاً قابل چشم‌پوشیه.

جمع‌بندی کوتاه 🧠:
حلقه داخل تابع سریع‌تر نیست چون «تابعه»
سریع‌تره چون از Local Variable استفاده می‌کنه
❤6🔥2🕊2
زمین را گر شوی مالک
طمع بر آسمان داری
دم مردن همی بینی
نه این داری نه آن داری!

لحظه ها را دریاب ، زندگی کن...
❤10🥰1🕊1
مگسی را کشتم
نه به این جرم که حیوان پلیدیست ، بد است
و نه چون نسبت سودش به ضرر یک به صد است
طفل معصوم به دور سر من میچرخید ،
به خیالش قند ام!

یا که چون اغذیه ی مشهورش تا به آن حد گند ام
ای دو صد نور به قبرش بارد ،
مگس خوبی بود!

من به این جرم که از فکر تو بیرونم کرد ،
مگسی را کشتم...

'حسین پناهی'
❤8🔥2🕊2🍓2
زن گرفتم شدم ای دوست به دام زن اسیر
من گرفتم تو نگیر

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

بود یک وقت مرا با رفقا گردش و سیر
یاد آن روز بخیر

زن مرا کرده میان قفس خانه اسیر
من گرفتم تو نگیر

یاد آن روز که آزاد ز غم‌ها بودم
تک و تنها بودم

زن و فرزند ببستند مرا با زنجیر
من گرفتم تو نگیر

بودم آن روز من از طایفه دُرد کشان
بودم از جمع خوشان

خوشی از دست برون رفت و شدم لات و فقیر
من گرفتم تو نگیر

ای مجرد که بود خوابگه‌ات بستر گرم
بستر راحت و نرم

زن مگیر، ار نه شود خوابگه‌ات لای حصیر
من گرفتم تو نگیر

بنده زن دارم و محکوم به حبس ابدم
مستحق لگدم

چون در این مسئله بود از خود مخلص تقصیر
من گرفتم تو نگیر

من از آن روز که شوهر شده‌ام خر شده‌ام
خر همسر شده‌ام

می‌دهد یونجه به من جای پنیر
من گرفتم تو نگیر

'ایرج میرزا'
🤣8🌚3👏1
روزگار سرد
می دانی دل من
از چه سوخت؟

هر که را در شهر دیدم
هیزم تر می فروخت

'متین شریفی'
💔6🕊1
تابع داخلی (built-in function) isinstance چیه و چه کاربردی داره؟


تابع isinstance برای بررسی نوع (type) یک مقدار استفاده می‌شه ، این تابع بررسی می‌کنه که آیا یک متغیر، نمونه‌ای (instance) از یک نوع مشخص هست یا نه

ساختار کلی:

isinstance(object, classinfo)


مقداری که می‌خواهیم نوع آن را بررسی کنیم: object

نوع (یا انواع) مورد انتظار: classinfo

مثال:
def validate(value):
if isinstance(value, int):
return True
return False


در این تابع:

اگر value از نوع int باشه ، مقدار True برمی‌گرده
در غیر این صورت False

خروجی‌ها:
print(validate(1))     # True


عدد 1 از نوع int هست ، پس نتیجه True می‌شه

print(validate('1'))   # False


رشته '1' از نوع str هست ، نه int، پس False برمی‌گرده

print(validate(2))     # True


عدد 2 هم از نوع int هست ، بنابراین خروجی True هستش

نکته مهم:
برخلاف مقایسه مستقیم نوع با
type(value) == int
استفاده از isinstance بهتر و استانداردتر هست


چون:

* از وراثت (inheritance) پشتیبانی می‌کند
* خواناتر و منعطف‌تر است

مثال تکمیلی (چند نوع)

isinstance(value, (int, float))


در این حالت اگر value عدد صحیح یا اعشاری باشد، نتیجه True خواهد بود.
❤9
شاید برات سؤال پیش بیاد که چرا تو پایتون این کد:

isinstance(True, int)

خروجیش True می‌شه، در حالی که داریم مقدار بولی می‌دیم

دلیلش مشخصه:
تو پایتون، bool از int ارث‌بری می‌کنه.

یعنی ساختار کلی به این شکله:
int
└── bool


به خاطر همین:

* مقدار True برابر میشه با 1
* مقدار False برابر میشه با 0

و استفاده ازشون تو محاسبات عددی کاملاً طبیعیه:

True + True     # 2
False + True # 1


تابع isinstance موقع بررسی نوع، وراثت رو هم در نظر می‌گیره

پس وقتی می‌پرسه ، آیا True یک int هست یا نه؟
جوابش می‌شه بله

خود پایتون هم اینو تأیید می‌کنه:

issubclass(bool, int)  # True


نکته‌ی دیگه اینه که از نظر پیاده‌سازی و حافظه هم، bool عملاً روی همون زیرساخت int ساخته شده

یعنی مقدار بولی یک عدد صحیح ساده‌شده‌ست، نه یک ساختار جداگانه‌ی مستقل. این هم یکی از دلایلیه که bool زیرکلاس int شده


اگه بخوای فقط عدد صحیح خالص قبول کنی و بولین رد بشه، می‌تونی این‌طوری چک کنی:

type(value) is int

یا:
isinstance(value, int) and not isinstance(value, bool)


جمع‌بندی:

این رفتار نه باگه نه اتفاقی؛ یک تصمیم طراحی آگاهانه تو پایتونه تا بولین‌ها بتونن راحت تو محاسبات عددی استفاده بشن
❤8🔥3👏2👍1
به صد یلدا الهی زنده باشی
انار وسیب وانگورخورده باشی

اگریلدای دیگرمن نباشم
تو باشی وتو باشی وتو باشی

یلداتون مبارک ❤️🥰
❤11🥰2
برایت بی‌الف خواهم فقط فردای بهتر را
تو اما آرزو کردی جهانم بی‌الف باشد
💔6🕊4
سحر با باد می‌گفتم حدیث آرزومندی
خطاب آمد که «واثق شو، به الطاف خداوندی»

دعای صبح و آهِ شب، کلید گنج مقصود است
بدین راه و روش می‌رو، که با دلدار پیوندی

قلم را آن زبان نَبوَد، که سرِّ عشق گوید باز
ورای حدّ تقریر است، شرح آرزومندی

الا ای یوسف مصری که کردت سلطنت مغرور!
پدر را باز پرس آخر، کجا شد مِهرِ فرزندی؟

جهان، پیر رعنا را، ترحّم در جِبِلَّت نیست
ز مِهر او چه می‌پرسی؟ در او همّت چه می‌بندی؟

همایی چون تو عالی‌قدر، حرص استخوان تا کی؟
دریغ آن سایهٔ همّت، که بر نااهل افکندی

در این بازار اگر سودی‌ست، با درویش خرسند است
خدایا منعَمم گردان به درویشی و خرسندی

به شعر حافظِ شیراز می‌رقصند و می‌نازند
سیه‌چشمان کشمیری و تُرکان سمرقندی


'حافظ'
❤11👏1
مدیونین فکر کنین قالب زدم 🙄
🤣10🔥6❤1
هیچ وقت یادم نمیره

تازه با SQLite آشنا شده بودم ، اومدم ی کلاس واسه مدیریت دیتابیس پروژم نوشتم
اسم فایل دیتابیس database.db و ماژول هم database.py بود

وقتی که کلاس تموم شده بود و متدهاشو تست کردم دیدم همه چیز آمادس برم سراغ فاز بعدی پروژه ، اومدم database.db رو که حاوی اطلاعات تستی بود رو پاک کنم

اشتباهی زدم database.py رو پاک کردم 🫩

خیلی درد داشت ( چون اون موقع من روی گوشی کدنویسی میکردم و دکمه غلط کردم (Control Z) وجود نداشت
🤣9💔3❤1😨1
💔9🥰3