Italiano
Apri in Telegram

Post یکی از کاربرد های bitwise operator ها:

27 marzo 2023
D
DailyProjects
یکی از کاربرد های bitwise operator ها: سلام. اگرچه توی زبان های سطح پایین تر استفاده از bitwise operator ها خیلی مرسومه، توی پایتون کمتر نیاز میشه تا برای حل مشکلمون بریم سراغشون و عموما از جایگزین های high-level تری استفاده میکنیم. ولی دونستن اینکه چیکار میکنن بعضی جاها میتونه مفید باشه. فرض کنید میخوایم با یک regex ساده یه عبارتی رو match کنیم: import re print(re.search("ABC.", "abc\n")) مچ نمیشن! حالا کافیه به عنوان flag بهش عدد ۱۸ رو بدیم: print(re.search("ABC.", "abc\n", flags=18)) مچ شد! درواقع با دادن عدد ۱۸ بهش گفتیم که case-insensitive باش و new line character ها رو هم با نقطه بگیر. ولی چطور از عدد ۱۸ این رو فهمید؟ موضوع اینجاست که ما یک سری فلگ از پیش تعریف شده داریم که توان های عدد ۲ هستن. اگه یه نگاه بشون بندازیم: ‌ TEMPLATE = 1 -> 00000001 IGNORECASE = 2 -> 00000010 LOCALE = 4 -> 00000100 MULTILINE = 8 -> 00001000 DOTALL = 16 -> 00010000 ما درواقع IGNORECASE رو OR کردیم با DOTALL که شد: 00010010 یا همون ۱۸. حالا اگر کسی به ما عدد ۱۸ رو بده چطور میتونیم بفهمیم چه flag هایی ست شده؟ با AND: TEMPLATE = 1 IGNORECASE = 2 LOCALE = 4 MULTILINE = 8 DOTALL = 16 flag = 18 if flag & TEMPLATE: print("Has TEMPLATE flag") if flag & IGNORECASE: print("Has IGNORECASE flag") if flag & DOTALL: print("Has DOTALL flag") به جای پاس دادن عدد ۱۸ میشه خیلی راحت از "|" استفاده کرد و چیزی رو حفظ نکرد: print(re.search("ABC.", "abc\n", flags=IGNORECASE | DOTALL)) این خودش ۱۸ رو میفرسته. نکته ی خوبش این بود که تنها با یک عدد این اطلاعات رو منتقل کردیم. مثال دومی که از این استفاده کرده ماژول selectors هست که وقتی یه socket ای آماده میشه و میخواد بگه آماده ی read هست یا write ، بهمون یه mask میده که از روی این mask باید بفهمیم. یعنی یه همچین چیزی داریم: EVENT_READ = (1 << 0) EVENT_WRITE = (1 << 1) اگه ۳ بود یعنی هم READ هم WRITE. اگه ۲ بود یعنی فقط WRITE، اگه 1 بود یعنی فقط READ. با همون if بالا متوجه میشیم و کاری که قرار هست انجام بدیم رو با توجه به این عدد انجام میدیم. 🖊 @AmirSoroushh
22 · 1.9K ·

Vicino nel feed

DDailyProjectshttps://morioh.com/p/8cf006b4b614?f=5e44c59998b8037d03aa8178DDailyProjectshttps://morioh.com/p/184ebed2363f
questo messaggio
DDailyProjects✅ شرکت آناکوندا وبسایت https://pyscript.com/ رو لانچ کرد 😁🎉 یک SaaS رایگان برای استفاده از pyscript تا بتونید اپلیکیشن‌های پایتونی رو توی مرورگر براحتی اجرا کنیDDailyProjectshttps://jeff.glass/post/first-look-pyscript-dot-com/ این مقاله، سایت رو بررسی کرده و راجع به هر قسمتش توضیحاتی داده
🐍🐍 Python & Raspberry 🐍🐍 Python & Raspberry 🐍@raspberry_python · canale · Tecnologia
7 274iscritti3 920post nell'indice
Feed della community Apri in Telegram

Un feed pubblico aperto dall'indice di ricerca ChatCrawler — «Google per il Telegram pubblico»; si aggiorna man mano che la community viene scansionata. Orari in UTC.

Solo contenuti pubblici, API ufficiale di Telegram. Informazioni · FAQ · Limiti dell'indice · Rimuovi una pagina · Catalogo · Ricerca · Come calcoliamo