تابع داخلی (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
به صد یلدا الهی زنده باشی
انار وسیب وانگورخورده باشی
اگریلدای دیگرمن نباشم
تو باشی وتو باشی وتو باشی
یلداتون مبارک ❤️🥰
انار وسیب وانگورخورده باشی
اگریلدای دیگرمن نباشم
تو باشی وتو باشی وتو باشی
یلداتون مبارک ❤️🥰
❤11🥰2
برایت بیالف خواهم فقط فردای بهتر را
تو اما آرزو کردی جهانم بیالف باشد
تو اما آرزو کردی جهانم بیالف باشد
💔6🕊4
سحر با باد میگفتم حدیث آرزومندی
خطاب آمد که «واثق شو، به الطاف خداوندی»
دعای صبح و آهِ شب، کلید گنج مقصود است
بدین راه و روش میرو، که با دلدار پیوندی
قلم را آن زبان نَبوَد، که سرِّ عشق گوید باز
ورای حدّ تقریر است، شرح آرزومندی
الا ای یوسف مصری که کردت سلطنت مغرور!
پدر را باز پرس آخر، کجا شد مِهرِ فرزندی؟
جهان، پیر رعنا را، ترحّم در جِبِلَّت نیست
ز مِهر او چه میپرسی؟ در او همّت چه میبندی؟
همایی چون تو عالیقدر، حرص استخوان تا کی؟
دریغ آن سایهٔ همّت، که بر نااهل افکندی
در این بازار اگر سودیست، با درویش خرسند است
خدایا منعَمم گردان به درویشی و خرسندی
به شعر حافظِ شیراز میرقصند و مینازند
سیهچشمان کشمیری و تُرکان سمرقندی
'حافظ'
خطاب آمد که «واثق شو، به الطاف خداوندی»
دعای صبح و آهِ شب، کلید گنج مقصود است
بدین راه و روش میرو، که با دلدار پیوندی
قلم را آن زبان نَبوَد، که سرِّ عشق گوید باز
ورای حدّ تقریر است، شرح آرزومندی
الا ای یوسف مصری که کردت سلطنت مغرور!
پدر را باز پرس آخر، کجا شد مِهرِ فرزندی؟
جهان، پیر رعنا را، ترحّم در جِبِلَّت نیست
ز مِهر او چه میپرسی؟ در او همّت چه میبندی؟
همایی چون تو عالیقدر، حرص استخوان تا کی؟
دریغ آن سایهٔ همّت، که بر نااهل افکندی
در این بازار اگر سودیست، با درویش خرسند است
خدایا منعَمم گردان به درویشی و خرسندی
به شعر حافظِ شیراز میرقصند و مینازند
سیهچشمان کشمیری و تُرکان سمرقندی
'حافظ'
❤11👏1
هیچ وقت یادم نمیره
تازه با SQLite آشنا شده بودم ، اومدم ی کلاس واسه مدیریت دیتابیس پروژم نوشتم
اسم فایل دیتابیس database.db و ماژول هم database.py بود
وقتی که کلاس تموم شده بود و متدهاشو تست کردم دیدم همه چیز آمادس برم سراغ فاز بعدی پروژه ، اومدم database.db رو که حاوی اطلاعات تستی بود رو پاک کنم
اشتباهی زدم database.py رو پاک کردم
خیلی درد داشت ( چون اون موقع من روی گوشی کدنویسی میکردم و دکمه غلط کردم (Control Z ) وجود نداشت
تازه با SQLite آشنا شده بودم ، اومدم ی کلاس واسه مدیریت دیتابیس پروژم نوشتم
اسم فایل دیتابیس database.db و ماژول هم database.py بود
وقتی که کلاس تموم شده بود و متدهاشو تست کردم دیدم همه چیز آمادس برم سراغ فاز بعدی پروژه ، اومدم database.db رو که حاوی اطلاعات تستی بود رو پاک کنم
اشتباهی زدم database.py رو پاک کردم
خیلی درد داشت ( چون اون موقع من روی گوشی کدنویسی میکردم و دکمه غلط کردم (
🤣9💔3❤1😨1
باغبان در را نبند من فرد گلچین نیستم
من اسیر یک گلم دنبال هرگل نیستم
'دکتر شریعتی'
من اسیر یک گلم دنبال هرگل نیستم
'دکتر شریعتی'
❤7🕊3❤🔥1
خبر مرگ مرا هر کسی آورد بخند
زندہ ام می کند آخر خبر خندہ تـــو
'حسین صیامی'
😢7🥰2👎1
عـــلـے | Ali.N
#چالش #python با استفاده از ماژول jdatetime تابعی بنویسید که خروجی مانند زیر تولید کند امروز چهارشنبه ، 17 دی ماه سال 1404 ، ساعت 15:39:54 است 🧑💻 کدتون رو زیر این پست کامنت کنید
کدی که انتظار میره اینه:
اما خروجی این کد:
import jdatetime
now = jdatetime.datetime.now()
text = 'امروز {} ، {} {} ماه سال {} ساعت {}:{}:{} است'
text = text.format(
now.jweekday(),
now.day, # روز
now.jmonth(), # ماه جلالی
now.year, # سال
now.hour, # ساعت
now.minute, # دقیقه
now.second # ثانیه
)
اما خروجی این کد:
امروز Wednesday ، 17 Dey ماه سال 1404 ساعت 19:51:1 است
عـــلـے | Ali.N
کدی که انتظار میره اینه: import jdatetime now = jdatetime.datetime.now() text = 'امروز {} ، {} {} ماه سال {} ساعت {}:{}:{} است' text = text.format( now.jweekday(), now.day, # روز now.jmonth(), # ماه جلالی now.year, # سال…
کدی که یکی از دوستان نوشته:
از راه حل جایگزین استفاده کرده
import jdatetime
def f_date():
now = jdatetime.datetime.now()
days = ["شنبه", "یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه"]
months = ["فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور",
"مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"]
day_name = days[now.weekday()]
month_name = months[now.month - 1]
message = f"امروز {day_name} ، {now.day} {month_name} ماه سال {now.year} ، ساعت {now.hour:02d}:{now.minute:02d}:{now.second:02d} است"
return message
print(f_date())
از راه حل جایگزین استفاده کرده
❤6🐳1
عـــلـے | Ali.N
کدی که یکی از دوستان نوشته: import jdatetime def f_date(): now = jdatetime.datetime.now() days = ["شنبه", "یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه"] months = ["فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", …
ولی چرا گره ای که با دست باز میشه رو با دندون باز کنیم؟
اگه یه سری به سورس ماژول jdatetime بزنیم متوجه میشیم ، چرا خروجی کد چیزی که انتظارش رو داریم نیست
مشکل از ست شدن لوکال هست و راه حلش هم یک خط کده!
اگه یه سری به سورس ماژول jdatetime بزنیم متوجه میشیم ، چرا خروجی کد چیزی که انتظارش رو داریم نیست
مشکل از ست شدن لوکال هست و راه حلش هم یک خط کده!
now = now.aslocale('Persian_Iran')🔥6👏3❤2
عـــلـے | Ali.N
ولی چرا گره ای که با دست باز میشه رو با دندون باز کنیم؟ اگه یه سری به سورس ماژول jdatetime بزنیم متوجه میشیم ، چرا خروجی کد چیزی که انتظارش رو داریم نیست مشکل از ست شدن لوکال هست و راه حلش هم یک خط کده! now = now.aslocale('Persian_Iran')
کد نهایی
و حالا خروجی:
import jdatetime
now = jdatetime.datetime.now()
now = now.aslocale('Persian_Iran')
text = 'امروز {} ، {} {} ماه سال {} ساعت {}:{}:{} است'
text = text.format(
now.jweekday(),
now.day, # روز
now.jmonth(), # ماه جلالی
now.year, # سال
now.hour, # ساعت
now.minute, # دقیقه
now.second # ثانیه
)
و حالا خروجی:
امروز چهارشنبه ، 17 دی ماه سال 1404 ساعت 19:54:43 است
❤7🔥3👍2
اگر زنده ماندم
و یک روزی باهم در یک خانه چای خوردیم،
برایت تعریف میکنم که این روزها
چقدر سخت و دیر و دور گذشت...
• کیمیا رجبی
و یک روزی باهم در یک خانه چای خوردیم،
برایت تعریف میکنم که این روزها
چقدر سخت و دیر و دور گذشت...
• کیمیا رجبی
❤10