ترفندهای برنامه‌نویسی
164 subscribers
27 photos
3 videos
22 files
615 links
Download Telegram
ضمن عرض سلام خدمت همراهان عزیز
درباره‌ی یکی از اوپراتورهای کمتر دیده شده‌ی پایتون که البته کاربرد جالبی هم داره یه مطلبی رو میخوندم و گفتم شاید بد نباشه ترجمه‌ش کنم.

اوپراتور =: که اسمش assignment expression هست ولی به walrus operator معروف شده.
و تلفظش به خاطر حرف w شبیه 'وُآل روس اوپِرِیتِر' هست.
از پایتون ۳.۸ دیگه استفاده ازش پذیرفته شده.

خب این کارش چیه؟
این علامت میشه گفت از ریاضیات وام گرفته شده و خب توی پایتون همه‌ی معنایی که تو ریاضیات داره رو شاید نداشته باشه، ولی خیلی از اصلش دور نشده.
در پایتون این اوپراتور میاد و وسط یه expression یه متغیر تعریف میکنه، احتمالا با مثال ساده‌تر میشه کارش رو دید:
بسیار پیش آمده که ما میخواستیم یه عملیات List Comprehension انجام بدیم که البته پای یه تابعی هم وسط باشه:
data = [1,2,3,4]
f_data = [f(x) for x in data if f(x) is not 4]
خب همین طور که واضحه الان تابع f برای هر آیتم توی لیست data داره دوبار محاسبه میشه
اما با استفاده از این اوپراتور میشه به این صورت نوشت:
f_data = [y for x in data if (y := f(x)) is not 4]
میبینید که توی if expression اومده و مقدار f رو برای آیتم پیمایش فعلی حساب کرده و ریخته تو متغیری به اسم y و این حرکت باعث شده تابع f فقط یبار محاسبه بشه! و این متغیری که استفاده کرده هم دیگه در بلوک فعلی و زیربلوک‌ها برای خط های بعدی وجود خواهد‌داشت.

* میتوان از =: حتی در زمانیکه یک عبارت درحال محاسبه شدن هست برای نسبت دادن استفاده کرد!
var := expr

البته از این اوپراتور هرجایی نمیشه استفاده کرد برای مثال:
a := 3 #must be done with a=3.
a = b := 4 #must be done with a=b=4
a = (b := 4) #legal, but not recommended
y := f(x) # INVALID
(y := f(x)) # Valid, though not recommended
درواقع این اوپراتور فقط میتونه تو دل یه expressions دیگه استفاده بشه، و خب توی خط آخر پرانتزها باعث شدن که اون عبارت خودش یه expressions محسوب بشه!.
خلاصه که اوپراتور کاربردی‌ای میتونه باشه هم بخاطر اینکه میتونه از خط‌های کدمون کم کنه، هم مثل اونجا که باعث شد یه تابع یبار محاسبه شد، میتونه باعث بهینه‌تر شدن اجرای برنامه هم باشه.
اینم لینک pep‌ برای مطالعه‌ی بیشتر.

*راستی walrus‌ میشه گراز دریایی، همینی که عکسش هم زیر پیام دیده میشه. بخاطر شباهت این اوپراتور با این گرازهای دریایی تنبل که همیشه درازکشیدن همچین لقبی بهش دادن.

آی‌دی کانال👇:
programming_tricks
از پیوستن شما به این کانال خرسند می‌شویم.
تم دارک وی‌اس‌کد رو کمی تغییر دادم، و البته تم دومی هم بهش اضافه کردم.
از لینک زیر میتونید نصبشون کنید(برای نصب هردو تم کافیه همین لینک رو دنبال کنید)
https://marketplace.visualstudio.com/items?itemName=MahdiFirouzjaah.fzj-dark-theme&ssr=false#review-details

منتظر نظرات سازنده‌ی شما هستم🙏.

آی‌دی کانال👇:
programming_tricks
🔴 کانال برنامه نویسی پایتون و سیستم های نهفته با مینی کامپیوتر رزبری پای

هوش مصنوعی ,لینوکس , پایتون


لینک کانال :

@raspberry_python

لینک گروه:
@python_QA
persian_chars_regex.py
538 B
الگوی regex برای حروف فارسی
fastest_prime_genarator.py
803 B
یکی از سریع‌ترین توابع برای پیدا کردن همه‌ی اعداد اول کوچکتر از یک عدد مفروض
📣 کانال تریک‌های برنامه‌نویسی

کانالی پیرامون پایتون و جنگو و وی‌اس‌کد با موضوعاتی که کمتر در آموزش‌ها و گروه‌های دیگر مورد توجه قرار می‌گیرد

📌 لینک کانال:
https://t.me/programming_tricks


⁉️ در قسمت کامنت‌ها و یا گروه پرسش و پاسخ سعی میکنیم به سوالات پیرموان موضوعیت گروه پاسخ داده شود.

📌 لینک گروه گفتگو و پرسش و پاسخ:
https://t.me/py_dj_discus

📬 از نظرات و مطلب پیشنهادی استقبال می‌شود.
https://t.me/mh_firouzjaah
subtitle_encoder.py
437 B
دوستان عزیز
حتما دیدین گاهی وقتا فایل‌های زیرنویس شما دچار مشکل میشن و متن داخلشون به درستی نمایش داده نمیشه!
خب برای من بیشتر این حالت بخاطر اشتباهی توی encode کردن این فایل‌ها هست و در اکثر موارد هم اون انکد اشتباه windows-1256 یا arabic هست.
با اجرای این کد از شما دایرکتوری یا path اون فایلهای زیرنویس رو میگیره و اصلاحشون می‌کنه!


آی‌دی کانال👇:
programming_tricks
Note: In Python 2.x, filter() returns list objects. This behavior changed in Python 3.x. Now the function returns a filter object, which is an iterator that yields items on demand. Python iterators are well known to be memory efficient.