the _ variable in python
احتمالا تا الان حداقل یکبار متغیر ـ داخل کد کسی دیدید و براتون سوال شده که این چرا یک نفر باید از آندرلاین برای متغیر استفاده کنه؟ متغیر ـ یا dummy variable یک متغیر که برای چیزهایی استفاده میشه که لازمشون نداریم. مثلا در یک مصاحبه ما ۳ مقدار خروجی داریم ولی فقط دوتا اول لازم داریم:
اینطوری ما متغیر ۳ام رو omit کردیم یا انداختیمش دور.
اما احتمالا تا اینجای کار رو خیلیهاتون میدونستید. ولی بیایید به ۲ کاربرد دیگه این متغیر نگاهی بندازیم.
استفاده به عنوان wild card در match-case
اگر با match-case پایتون آشنا باشید میدونید که در آخر هر مچ-کیس شما از ـ استفاده میکنید تا مقدار دیفالت مشخص کنید که اگر هیچ کدوم از موارد مشخص شده نبود یک کار خاصی انجام بدید. اینجا در حقیقت ـ یک wild card که به همه چیز مچ میشه و برای شما رفتار دیفالت بودن رو ارمغان میاره D:
استفاده از این متغیر حتی جالب تر میشه زمانی که شما میتونید از اون داخل خود مچ-کیس استفاده کنید.
همینطور که میبینید در کیس اول *_ استفاده شده که در حقیقت گفته که ورودی باید یک لیست باشه که با کلمه "BEEP" شروع شده باشه. هرچیزی این وسط بود اشکال نداره ولی باید دوتا float در آخرش وجود داشته باشه. اینجا ما از _ به عنوان وایلد کارت استفاده کردیم و همچنین ورودی های اضافه و غیر ضروری دور ریختیم.
البته که شما میتونید به جای استفاده از ـ* از یک متغیر استفاده کنید و ورودیهاتون رو بگیرید:
و آخرین کاربرد این متغیر در کنسول پایتون هست. هر پردازشی که نتیجه ای غیر از None داشته باشه در نهایت داخل این متغیر ذخیره میشه. برای مثال:
@TorhamDevCH
احتمالا تا الان حداقل یکبار متغیر ـ داخل کد کسی دیدید و براتون سوال شده که این چرا یک نفر باید از آندرلاین برای متغیر استفاده کنه؟ متغیر ـ یا dummy variable یک متغیر که برای چیزهایی استفاده میشه که لازمشون نداریم. مثلا در یک مصاحبه ما ۳ مقدار خروجی داریم ولی فقط دوتا اول لازم داریم:
a, b, _ = complex_process_with_three_result()
اینطوری ما متغیر ۳ام رو omit کردیم یا انداختیمش دور.
اما احتمالا تا اینجای کار رو خیلیهاتون میدونستید. ولی بیایید به ۲ کاربرد دیگه این متغیر نگاهی بندازیم.
استفاده به عنوان wild card در match-case
اگر با match-case پایتون آشنا باشید میدونید که در آخر هر مچ-کیس شما از ـ استفاده میکنید تا مقدار دیفالت مشخص کنید که اگر هیچ کدوم از موارد مشخص شده نبود یک کار خاصی انجام بدید. اینجا در حقیقت ـ یک wild card که به همه چیز مچ میشه و برای شما رفتار دیفالت بودن رو ارمغان میاره D:
def handle_command(message):
match message:
case "BEEP":
print("BEEPED")
case "YELL":
print("YELLED")
case _:
print("invalid command.")
استفاده از این متغیر حتی جالب تر میشه زمانی که شما میتونید از اون داخل خود مچ-کیس استفاده کنید.
def handle_command(message):
match message:
case ["BEEP", *_, float(freq), float(time)]:
print(f"BEEPED FOR {freq} AND {time} long")
case ["NECK", angle]:
print(f"Rotated neck for {angle}")
case _:
print("invalid command.")
همینطور که میبینید در کیس اول *_ استفاده شده که در حقیقت گفته که ورودی باید یک لیست باشه که با کلمه "BEEP" شروع شده باشه. هرچیزی این وسط بود اشکال نداره ولی باید دوتا float در آخرش وجود داشته باشه. اینجا ما از _ به عنوان وایلد کارت استفاده کردیم و همچنین ورودی های اضافه و غیر ضروری دور ریختیم.
البته که شما میتونید به جای استفاده از ـ* از یک متغیر استفاده کنید و ورودیهاتون رو بگیرید:
def handle_command(message):
match message:
case ["BEEP", *extra_items, float(freq), float(time)]:
print(f"BEEPED FOR {freq} AND {time} long also extra items: {extra_items}")
case ["NECK", angle]:
print(f"Rotated neck for {angle}")
case _:
print("invalid command.")
handle_command(["BEEP", 23, 23, 23,"a", 2.1, 3.2])
و آخرین کاربرد این متغیر در کنسول پایتون هست. هر پردازشی که نتیجه ای غیر از None داشته باشه در نهایت داخل این متغیر ذخیره میشه. برای مثال:
Python 3.13.5 (main, Jun 25 2025, 18:55:22) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 3 + 4
7
>>> _
7
>>>
@TorhamDevCH
👍8❤2🔥1🖕1
تاپلها همیشه immutable نیستند!
قالب ما tupleها رو یک دیتااستراکچر immutable یا تغییر ناپذیر میشناسیم. immutable یعنی اگر یک تایپ ساخته بشه هیچ وقت قابل تغییر نخواهد بود.
یا تغریف دیکنشنری:
unchanging over time or unable to be changed.
در پایتون هم اگر شما یک tuple رو یک بار تعریف کنید دیگه قابل تغییر نیست. برای مثال:
خب پس تاپل غیر قابل تغییر. اما یک نکته مهم درباره غیر قابل تغییر بودن تاپل ها وجود داره و اونم اینه که با اینکه خود تاپل غیر قابل تغییر یا immutble هست محتوا داخل اون قابل تغییر D:
به این مثال دقت کنید:
همینطور که میبینید ما تونستیم محتوا لیستی که داخل این تاپل بود تغییر بدیم. پس اگر یک دیتا تایپ mutable داخل تاپل داشته باشیم تاپل ما میتونه تغییر کنه. اما سایز یا lenght تاپل هیچ وقت تغییر نمیکنه.
تمام اینها به یک نکته جالب میرسه. ما میدونیم تنها چیزهایی میتونن hash بشند در پایتون که غیر قابل تغییر باشن و تنها چیزهایی که میتونن hash بشند میتونن به عنوان کلید یک دیکشنری استفاده بشن. برای مثال:
اما اگر ما از یک mutable داخل این تایپل استفاده کنیم از اونجایی که این تاپیل حالا میتونه تغییر پیدا کنه قابل hash شدن نیست و در نتیجه نمیتونه به عنوان کلید دیکششنری استفاده بشه:
این نکته گاهی میتونه به slient bug برسه و یک جایی به مشکل بخوره D:
@TorhamDevCH
قالب ما tupleها رو یک دیتااستراکچر immutable یا تغییر ناپذیر میشناسیم. immutable یعنی اگر یک تایپ ساخته بشه هیچ وقت قابل تغییر نخواهد بود.
یا تغریف دیکنشنری:
unchanging over time or unable to be changed.
در پایتون هم اگر شما یک tuple رو یک بار تعریف کنید دیگه قابل تغییر نیست. برای مثال:
>>> a = (1, 2, 3)
>>> a[1]="new value"
Traceback (most recent call last):
File "<python-input-3>", line 1, in <module>
a[1]="new value"
~^^^
TypeError: 'tuple' object does not support item assignment
>>>
خب پس تاپل غیر قابل تغییر. اما یک نکته مهم درباره غیر قابل تغییر بودن تاپل ها وجود داره و اونم اینه که با اینکه خود تاپل غیر قابل تغییر یا immutble هست محتوا داخل اون قابل تغییر D:
به این مثال دقت کنید:
>>> a = (1, 2, ["first"])
>>> a
(1, 2, ['first'])
>>> a[2].append("second")
>>> a
(1, 2, ['first', 'second'])
>>>
همینطور که میبینید ما تونستیم محتوا لیستی که داخل این تاپل بود تغییر بدیم. پس اگر یک دیتا تایپ mutable داخل تاپل داشته باشیم تاپل ما میتونه تغییر کنه. اما سایز یا lenght تاپل هیچ وقت تغییر نمیکنه.
تمام اینها به یک نکته جالب میرسه. ما میدونیم تنها چیزهایی میتونن hash بشند در پایتون که غیر قابل تغییر باشن و تنها چیزهایی که میتونن hash بشند میتونن به عنوان کلید یک دیکشنری استفاده بشن. برای مثال:
>>> a = (1, 2)
>>> {a:"a as the key"}
{(1, 2): 'a as the key'}
>>>
اما اگر ما از یک mutable داخل این تایپل استفاده کنیم از اونجایی که این تاپیل حالا میتونه تغییر پیدا کنه قابل hash شدن نیست و در نتیجه نمیتونه به عنوان کلید دیکششنری استفاده بشه:
>>> a = (1, [2, 3])
>>> {a: "a as the key"}
Traceback (most recent call last):
File "<python-input-14>", line 1, in <module>
{a: "a as the key"}
TypeError: unhashable type: 'list'
>>>
این نکته گاهی میتونه به slient bug برسه و یک جایی به مشکل بخوره D:
@TorhamDevCH
❤10👍4🔥2🖕1
TorhamDev | تورهام 😳 pinned «تاپلها همیشه immutable نیستند! قالب ما tupleها رو یک دیتااستراکچر immutable یا تغییر ناپذیر میشناسیم. immutable یعنی اگر یک تایپ ساخته بشه هیچ وقت قابل تغییر نخواهد بود. یا تغریف دیکنشنری: unchanging over time or unable to be changed. در پایتون هم اگر…»
بچهها دوره ماشینلرنینگ خوب سراغ ندارید؟ دوره ای که دیده باشید و به نظرتون خیلی خوب بوده.
❤6👎2🖕2
بعد از تقریبا ۱۲ روز تعداد اندکی از آدمها تونستن وصل بشن، من هم با اینترنتی که معلوم نیست تا ثانیهی دیگه وصل هست یا نه مینویسم.
آسیب وحشتناکی که به کسب و کارها و روان جامعه وارد شد و کسی اندکی دربارش ابراز ناراحتیهم نکرد. موج بزرگ تعدیل شرکتهای فناوری در پایان سال به خاطر این خاموشی ارتباط در ایران که کسی براش ابراز ناراحتی نخواهد کرد. موج بزرگ مهاجرت که از همینالان شروع شده و آدمهایی که برای داشتن یکی از پایهترین حقوق انسانی یعنی ارتباط از کشور و محل تولدشون مهاجرت میکنن که قطعا کسی براش مهم نخواهد بود.
قبلا میگفتیم به امید اینترنت آزاد، حالا باید گفت به امید ارتباط آزاد چون حالا حتی پیامک و تماس هم مدت طولانی گرفته شد.
آسیب وحشتناکی که به کسب و کارها و روان جامعه وارد شد و کسی اندکی دربارش ابراز ناراحتیهم نکرد. موج بزرگ تعدیل شرکتهای فناوری در پایان سال به خاطر این خاموشی ارتباط در ایران که کسی براش ابراز ناراحتی نخواهد کرد. موج بزرگ مهاجرت که از همینالان شروع شده و آدمهایی که برای داشتن یکی از پایهترین حقوق انسانی یعنی ارتباط از کشور و محل تولدشون مهاجرت میکنن که قطعا کسی براش مهم نخواهد بود.
قبلا میگفتیم به امید اینترنت آزاد، حالا باید گفت به امید ارتباط آزاد چون حالا حتی پیامک و تماس هم مدت طولانی گرفته شد.
👍14❤3😭3💔1
۳ ساعت تا رسیدن به ۲۸۰ ساعت خاموشی اینترنت در ایران، یک ملت که از دنیای اینترنت حذف شدن.
ساعت شمار خاموشی اینترنت ایران:
etchamber.ir
ساعت شمار خاموشی اینترنت ایران:
etchamber.ir
البته باید این رو هم در نظر داشت باشیم که یکسری در این زمان قطعی کاملا وصل بودن، برخی از خبرگزاریهای انتخابی و برخی از دانشگاهها کشور. جالب بدونید در دورانی که کشور به اینترنت دسترسی نداشت و ملت ایران در خاموشی به سر میبردن دوستان در دانشگاه شریف با دانشگاه بغداد کنفرانس در بستر گوگلمیت برگذار کردن در باب هوش مصنوعی!
میتونید خبرهای کامل رو در این ویدیو از دیجیاتو ببینید:
https://aparat.com/v/baq2r1m
میتونید خبرهای کامل رو در این ویدیو از دیجیاتو ببینید:
https://aparat.com/v/baq2r1m
💔8👍3🖕3
TorhamDev | تورهام 😳 pinned «۳ ساعت تا رسیدن به ۲۸۰ ساعت خاموشی اینترنت در ایران، یک ملت که از دنیای اینترنت حذف شدن. ساعت شمار خاموشی اینترنت ایران: etchamber.ir»
خاموشی اینترنت ایران وارد ساعت ۳۰۰ام خودش شد!
https://etchamber.ir
یکسری خبر هم بوده که تا آخر هفته متصل میشه اما کدوم هفته کسی نمیدونه :)
و همچنین خیلیها معتقدند که اینترنت دیگر هیچ وقت به حالت قبل خاموشی برنخواهد گشت و محدودهای خیلی شدیدتر اعمال خواهد شد و بجای black list داشتن قرار همهچیز بسته باشه و بجاش چندتا وبسایت و پلتفرمهای انتخابی white list بشند. همچنین یکسری خبر هم هست درباره شرکتهایی که مجوز گرفتن برای دسترسی به اینترت آزاد که دقیقا همون اینترنت طبقاتی خواهد بود.
حالا باید منتظر بمونیم آخر یکی از هفتهها وصل بشه ببینیم چی قرار اصلا وصل بشه :)
https://etchamber.ir
یکسری خبر هم بوده که تا آخر هفته متصل میشه اما کدوم هفته کسی نمیدونه :)
و همچنین خیلیها معتقدند که اینترنت دیگر هیچ وقت به حالت قبل خاموشی برنخواهد گشت و محدودهای خیلی شدیدتر اعمال خواهد شد و بجای black list داشتن قرار همهچیز بسته باشه و بجاش چندتا وبسایت و پلتفرمهای انتخابی white list بشند. همچنین یکسری خبر هم هست درباره شرکتهایی که مجوز گرفتن برای دسترسی به اینترت آزاد که دقیقا همون اینترنت طبقاتی خواهد بود.
حالا باید منتظر بمونیم آخر یکی از هفتهها وصل بشه ببینیم چی قرار اصلا وصل بشه :)
😭4
TorhamDev | تورهام 😳 pinned «خاموشی اینترنت ایران وارد ساعت ۳۰۰ام خودش شد! https://etchamber.ir یکسری خبر هم بوده که تا آخر هفته متصل میشه اما کدوم هفته کسی نمیدونه :) و همچنین خیلیها معتقدند که اینترنت دیگر هیچ وقت به حالت قبل خاموشی برنخواهد گشت و محدودهای خیلی شدیدتر اعمال خواهد…»
۳۵۰ ساعت از خاموشی اینترنت ایران گذشت، پس از ۳۵۰ ساعت برخی وبسایتها از محدودت خارج شده ان، این به معنا اتصال مجدد اینترنت ایران نیست بلکه صرفا برخی سایتهای انتخابی باز شده ان.
پس ۳۵۰ ساعت هنوز هیچ خبر رسمی مبنی بر زمان اتصال اینترنت ایران منتشر نشده است.
ساعت شمار خاموشی اینترنت ایران:
https://etchamber.ir/
پس ۳۵۰ ساعت هنوز هیچ خبر رسمی مبنی بر زمان اتصال اینترنت ایران منتشر نشده است.
ساعت شمار خاموشی اینترنت ایران:
https://etchamber.ir/
👍5❤1