This media is not supported in your browser
VIEW IN TELEGRAM
وقتی ی برنامه نویس کات میکنه 😂🦦...
🤣11🥰3🌚2
عـــلـے | Ali.N
#Quiz #Python 🧐 خروجی تابع چیه؟ تو کامنت همین پست نظرتون به همراه دلیل بنویسید.
خب بریم سراغ جواب کوئیز!
توی ساختار try/except ، داخل بلوک try عدد 1 رو return میکنیم.
چون داخل try هیچ خطایی رخ نمیده، بلوک except اجرا نمیشه.
پس تا اینجای کار Python آماده بود که خروجی رو 1 برگردونه.
بعد از except میرسیم به بلوک else
شاید عجیب باشه، ولی بله! else میتونه کنار try/except هم استفاده بشه.
این بلوک زمانی اجرا میشه که داخل try خطایی رخ نده و داخل try مقدار return نشده باشه.
ولی اینجا چون ما داخل try همون اول return کردیم، پس اینجا دیگه نوبت به else نمیرسه.
و اما میرسیم به بلوک finally…
این یکی واقعاً سرخود و قلدره!
فرقی نداره خطا داشتی یا نداشتی، return کرده باشی یا نه… finally همیشه اجرا میشه
و چون داخل finally عدد 4 رو return کردیم، این return آخر همهی returnهای قبل رو میپوشونه.
پس خروجی نهایی تابع → عدد 4
توی ساختار try/except ، داخل بلوک try عدد 1 رو return میکنیم.
چون داخل try هیچ خطایی رخ نمیده، بلوک except اجرا نمیشه.
پس تا اینجای کار Python آماده بود که خروجی رو 1 برگردونه.
بعد از except میرسیم به بلوک else
شاید عجیب باشه، ولی بله! else میتونه کنار try/except هم استفاده بشه.
این بلوک زمانی اجرا میشه که داخل try خطایی رخ نده و داخل try مقدار return نشده باشه.
ولی اینجا چون ما داخل try همون اول return کردیم، پس اینجا دیگه نوبت به else نمیرسه.
و اما میرسیم به بلوک finally…
این یکی واقعاً سرخود و قلدره!
فرقی نداره خطا داشتی یا نداشتی، return کرده باشی یا نه… finally همیشه اجرا میشه
و چون داخل finally عدد 4 رو return کردیم، این return آخر همهی returnهای قبل رو میپوشونه.
پس خروجی نهایی تابع → عدد 4
❤8🔥3👏1
عـــلـے | Ali.N
خب بریم سراغ جواب کوئیز! توی ساختار try/except ، داخل بلوک try عدد 1 رو return میکنیم. چون داخل try هیچ خطایی رخ نمیده، بلوک except اجرا نمیشه. پس تا اینجای کار Python آماده بود که خروجی رو 1 برگردونه. بعد از except میرسیم به بلوک else شاید عجیب باشه،…
اگه سوالی بود ، توی کامنت ها یا پیویم بپرسید
@AliNaghdi84
@AliNaghdi84
❤6🔥1
مهمتر از
به کجا رسیدن،
از کجا،به کجا رسیدنه!
پس برای
پرواز اجازه نگیر!
این تویی که باید اوج
بگیری و به بلندیها برسی.
بالها مالِ تو هستند
و آسمانها مال هيچ کس.
به کجا رسیدن،
از کجا،به کجا رسیدنه!
پس برای
پرواز اجازه نگیر!
این تویی که باید اوج
بگیری و به بلندیها برسی.
بالها مالِ تو هستند
و آسمانها مال هيچ کس.
❤9👏2🕊1
آشنایی با عملگر والروس در پایتون (:=)
تو پایتون 3.8 به بعد یک عملگر جدید اضافه شد به اسم والروس یا := که اجازه میده در حین مقایسه یا شرط، مقداردهی هم انجام بدیم
یعنی بدون اینکه دو بار یک دستور تکرار بشه، هم مقدار دریافت میکنیم هم شرط رو چک میکنیم
🔸 مثال معمولی (بدون والروس)
اینجا ما دو بار دستور input نوشتهایم:
یک بار قبل از حلقه، یک بار داخل حلقه
🔸 مثال با عملگر والروس
در این نسخه با کمک عملگر := همزمان:
مقدار ورودی را داخل password قرار میدهیم
و همان لحظه آن را با مقدار صحیح مقایسه میکنیم
در نتیجه کد کوتاهتر، تمیزتر و خواناتر میشود
✔️ خلاصه:
تو پایتون 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
خب بریم سراغ جواب کوئیز!
علت سریعتر بودن پیمایش حلقه داخل تابع، به نحوهی دسترسی پایتون به متغیرها برمیگرده
داخل تابع:
به صورت Local Variable ذخیره میشن
اما خارج از تابع:
اینها Global Variable هستن
در پایتون:
به همین دلیل، وقتی حلقه داخل تابع اجرا میشه، پایتون برای پیدا کردن متغیرها زمان کمتری صرف میکنه.
کدی که بیرون تابع اجرا میشه:
داخل فضای Global Namespace قرار داره
پایتون باید مدیریت بیشتری روش انجام بده
(مانند جستجو در namespace، ردیابی و تعامل با ماژولها)
داخل تابع:
محیط اجرا بستهتر و سادهتره
دربارهی Call Stack:
ممکنه فکر کنیم چون تابع Call Stack داره باید کندتر باشه
اما:
هزینهی صدا زدن تابع فقط یک بار پرداخت میشه
در حالی که حلقه 1,000,000 بار اجرا میشه
پس این هزینه در مقایسه با تعداد تکرار حلقه عملاً قابل چشمپوشیه.
جمعبندی کوتاه 🧠:
علت سریعتر بودن پیمایش حلقه داخل تابع، به نحوهی دسترسی پایتون به متغیرها برمیگرده
داخل تابع:
متغیر _
و خود 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 ) از یک نوع مشخص هست یا نه
ساختار کلی:
مقداری که میخواهیم نوع آن را بررسی کنیم: object
نوع (یا انواع) مورد انتظار: classinfo
مثال:
در این تابع:
اگر value از نوع int باشه ، مقدار True برمیگرده
در غیر این صورت False
خروجیها:
عدد 1 از نوع int هست ، پس نتیجه True میشه
رشته '1' از نوع str هست ، نه int، پس False برمیگرده
عدد 2 هم از نوع int هست ، بنابراین خروجی True هستش
نکته مهم:
چون:
* از وراثت (inheritance ) پشتیبانی میکند
* خواناتر و منعطفتر است
مثال تکمیلی (چند نوع)
در این حالت اگر value عدد صحیح یا اعشاری باشد، نتیجه True خواهد بود.
تابع isinstance برای بررسی نوع (
ساختار کلی:
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 بهتر و استانداردتر هست
چون:
* از وراثت (
* خواناتر و منعطفتر است
مثال تکمیلی (چند نوع)
isinstance(value, (int, float))
در این حالت اگر value عدد صحیح یا اعشاری باشد، نتیجه True خواهد بود.
❤9
شاید برات سؤال پیش بیاد که چرا تو پایتون این کد:
خروجیش True میشه، در حالی که داریم مقدار بولی میدیم
دلیلش مشخصه:
تو پایتون، bool از int ارثبری میکنه.
یعنی ساختار کلی به این شکله:
به خاطر همین:
* مقدار True برابر میشه با 1
* مقدار False برابر میشه با 0
و استفاده ازشون تو محاسبات عددی کاملاً طبیعیه:
تابع isinstance موقع بررسی نوع، وراثت رو هم در نظر میگیره
پس وقتی میپرسه ، آیا True یک int هست یا نه؟
جوابش میشه بله
خود پایتون هم اینو تأیید میکنه:
اگه بخوای فقط عدد صحیح خالص قبول کنی و بولین رد بشه، میتونی اینطوری چک کنی:
یا:
جمعبندی:
این رفتار نه باگه نه اتفاقی؛ یک تصمیم طراحی آگاهانه تو پایتونه تا بولینها بتونن راحت تو محاسبات عددی استفاده بشن
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