بنیاد پایتون کاران فارسی
Статистика🔰 مقالات و اخبار مرتبط با پایتون فارسی 🎗 گروه رسمی بنیاد نرم افزار پایتون فارسی: @PyFarsi 🎗 گروه برنامه نویسی و امنیت شبکه: @Gozarit | @Gozaritch 🎗 گروه آفتاپیک: @PyFarsi_offtopic | @GozarITOfftopic 🎗 تبلیغات: @GozaritADS
- Последний пост
- 13 авг.
- Последнее чтение
- 15 авг.
- Постов за неделю
- 1
- Всего постов
- 20
- Тип
- открытый
- Язык
- персидский
- Категория
- Новости и СМИ
- В каталоге с
- 14 авг.
- 1/24сутки в ленте
- 189
- 1/48двое суток
- 216
- 1/72трое суток
- 233
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
در جنگو، از blank=True استفاده کنیم یا null=True ؟ یکی از اشتباهات رایج در طراحی مدلهای Django اینه که برای فیلدهای متنی مثل EmailField یا CharField بدون دلیل از null=True استفاده کنیم. مثلاً بین این دو: email = models.EmailField( max_length=100, blank=True ) و: email = models.EmailField( max_length=100, blank=True, null=True ) معمولاً گزینهی اول انتخاب بهتریه. چرا؟ چون blank=True یعنی این فیلد در مرحلهی validation میتونه خالی باشه. اما null=True یعنی دیتابیس اجازه داشته باشه مقدار NULL ذخیره کنه. در فیلدهای متنی Django معمولاً توصیه میشه از null=True استفاده نکنیم؛ چون در این حالت برای خالی بودن دو حالت مختلف خواهیم داشت: email = "" و : email = None یعنی برای یک مفهوم ساده، دو مقدار متفاوت داریم که میتونه در queryها و منطق برنامه دردسر اضافه ایجاد کنه. پس در اکثر مواقع: email = models.EmailField( max_length=100, blank=True ) انتخاب تمیزتر و اصولیتریه 📌 پس: برای CharField و EmailField و سایر فیلد های متنی، معمولاً blank=True کافی است. 🔰Group: @PyFarsi 🔰Channel: @PSFarsi #Django #Python #Backend #Programming
سرعت 5G همراه اول حق مینوازد 🔥 〰〰〰〰〰 🌐 Website: LearnSecurity.ir 🎓 Channel: @LearnSecurityIR 🖥 Programming: @GozarIT | @PyFarsi 〰〰〰〰〰
// Initialization of a new chapter... #define SUCCESS 100% #define STABILITY 100% #define BUGS 0 /* سال نو، فرصتی برای ریفکتور مسیر زندگی و بهینهسازی اهداف است */ if (NEW_YEAR) { print("سال نو آغاز یک چرخهی جدید از تلاش، پیشرفت و موفقیت است. امیدواریم در این سال، تمامی پردازشهای زندگیتان بدون خطا اجرا شده، خروجی تلاشهایتان بهینه باشد و در مسیر رشد و آرامش، همیشه در حالت پایدار باقی بمانید.") } 〰➖〰➖〰➖〰➖〰➖〰 📌 با احترام از سوی مجموعه برنامه نویسان 🛡 Programming: @Gozaritch 🔒 Network Security: @LearnSecurityIR 👨💻 Programming: @PSFarsi 🎮 Gift: @Persian_GiftIR 🎬 FilmBazan: @FilmBazanG 🍁 Facts: @FactsOf_Life
🚀 پشتیبانی رسمی Django از MongoDB منتشر شد! 🔹 خبر خوب برای توسعهدهندگان Django! تیم MongoDB بهتازگی از بکاند رسمی MongoDB برای Django رونمایی کرده است که اکنون در مرحله پیشنمایش عمومی قرار دارد. 🔹 با این پکیج، میتوانید مستقیماً از مدلهای Django برای مدیریت اسناد MongoDB استفاده کنید و از قابلیتهای قدرتمند Django مانند فرمها، اعتبارسنجی، احراز هویت و حتی پنل مدیریت بهره ببرید. 🔹 اتصال به MongoDB نیز بهراحتی از طریق تنظیمات settings.py انجام میشود. نسخه نهایی این پکیج در اواخر ۲۰۲۵ منتشر خواهد شد. 🔗 مطالعه بیشتر #Django #MongoDB #Backend #توسعه_وب 🔰Group: @PyFarsi 🔰Channel: @PSFarsi
سوال⁉️ برنامه ای بنویسید که کلمات موجود در یک لیست رو بر اساس حرف اول هر کلمه گروه بندی کند. ☑️ مثال : words = [ "bird", "apple", "banana", "cherry", "dog", "cat", "sun", "moon", "star", "fish", "turtle", "frog", "elephant", "giraffe", "zebra", ] ☑️ خروجی : letter='a': ['apple'] letter='b': ['banana', 'bird'] letter='c': ['cat', 'cherry'] letter='d': ['dog'] letter='e': ['elephant'] letter='f': ['fish', 'frog'] letter='g': ['giraffe'] letter='m': ['moon'] letter='s': ['star', 'sun'] letter='t': ['turtle'] letter='z': ['zebra'] 〰️〰️〰️〰️〰️〰️〰️〰️〰️ 🔰Group: @PyFarsi 🔰Channel: @PSFarsi
☢️ دوره اندروید هکینگ! قسمت دوم: مود کردن بازیهای یونیتی ( آنلاک درون پرداختی و آیتم های پولی ) 📝 در این قسمت یاد میگیریم چگونه ویژگیهای پولی بازیها و برنامههای اندرویدی را آنلاک کنیم! 💸 روشهای عملی برای عبور از محدودیتهای پرداختی 📱 ابزارها و ترفندهای حرفهای که هیچوقت به شما نگفتند! 📱 مشاهده ویدیو کامل در یوتیوب 💡 منتظر قسمتهای بعدی باشید! 〰〰〰〰〰 🌐 Website: LearnSecurity.ir 🎓 Channel: @LearnSecurityIR 🖥 Programming: @GozarIT | @PyFarsi 〰〰〰〰〰
پکیج Django Cotton یک ابزار برای ایجاد و مدیریت کامپوننتهای مدرن در قالبهای جنگو است. این پکیج با افزودن قابلیتهایی مشابه سیستمهای کامپوننتمحور مدرن مثل React یا Vue، به توسعهدهندگان کمک میکند تا کدهای فرانتاند خود را به صورت ماژولار و قابل استفاده مجدد بنویسند. ویژگیهای اصلی Django Cotton 1- کامپوننتها با قابلیت استفاده مجدد: کامپوننتها میتوانند متغیرها و HTML دلخواه دریافت کرده و خروجی آنها را قابل تنظیم کنند. 2- استفاده از c-slot: برای ارسال بلوکهای HTML به عنوان اسلات به کامپوننتها. 3- قابلیت اورراید کردن ویژگیهای پیشفرض: با استفاده از <c-vars> میتوان مقادیر پیشفرض را تعریف و در صورت نیاز بازنویسی کرد. قابلیت تعریف کامپوننتهای پویا: با استفاده از حلقهها یا دادههای پویا، میتوان کامپوننتهایی را بر اساس نوع داده نمایش داد. تلفیق با ابزارهایی مانند HTMX: برای مدیریت درخواستهای AJAX و رفرش کردن بخشهای مختلف صفحه. داکیومنت رسمی گیتهاب
☢️ دوره اندروید هکینگ! قسمت اول: مود کردن بازیهای یونیتی 📝 در این قسمت یاد میگیرید که چطور بازی یونیتی با ساختار mono را به راحتی مود کنید. به راحتی میتوانید بازی های دلخواه خود را دانلود و آن را به طور کامل مود و قفل های بازی را آنلاک کنید. 📱 ابزارها و ترفندهای حرفهای که هیچوقت به شما نگفتند! 📱 مشاهده ویدیو کامل در یوتیوب 💡 منتظر قسمتهای بعدی باشید! 〰〰〰〰〰 🌐 Website: LearnSecurity.ir 🎓 Channel: @LearnSecurityIR 🖥 Programming: @GozarIT | @PyFarsi 〰〰〰〰〰
PostgreSQL Cheat-Sheet
🎮 به دنیای بازیها خوش آمدید! تجربهای جدید در خرید! 💸 با خرید گیفت کارتهای بازی و استیم از Persian Gift، دنیای جدیدی از سرگرمیها را کشف کنید! ⭐️ بهترین گیفت کارتهای بازی را با قیمتهای مناسب پیدا کنید. با ما همراه شوید و از تجربههای جدید لذت ببرید. 🌟 خرید سریع و آسان گیفت کارتهای بازی و استیم و ... با بهترین قیمتها! 🎮 مجموعه خدماتی پرشین گیفت 💠 Channel: @Persian_GiftIR 🌐 Website: Persian-Gift.ir 👤 Support: @Hidden0612
📱 تست نفوذ حرفهای و دسترسی کامل به گوشیهای اندرویدی! 📝 همونطور در ویدیو مشاهده کردید، دیوایس ها به طور واقعی هستند. از طریق سیستم به موبایل اندرویدی خودمون دسترسی کامل گرفتیم و توی موبایل هم هیچ برنامه خاصی باز نیست. 📍 دسترسی فول امکانات نظیر دسترسی به پیام ها، تماس ها، مخاطبین، تغییر والپیپر، لاک گوشی، ریستارت، خاموش روشن کردن و... ♾ نمیدونم چرا هرکی میاد پیشم موبایلش رو دستم نمیده مثلا ی ساعت نگاه کنم، به نظرتون دلیل خاصی میتونه داشته باشه 😁 🎥 ویدیو دمو می باشد ... 🔜 ویدیو کامل به زودی ... ✅ با ما همراه باشید ... 💪 حمایت بشه ویدیو آموزشی کامل میزارم. 〰〰〰〰〰 🌐 Website: LearnSecurity.ir 🎓 Channel: @LearnSecurityIR 🖥 Programming: @GozarIT | @PyFarsi 〰〰〰〰〰
📱 تست نفوذ حرفهای و دسترسی کامل به گوشیهای اندرویدی! 🖥 یادگیری تکنیکهای پیچیده و ابزارهای تخصصی برای تست نفوذ اندورید! 📶 در این سناریو تست نفوذ بر روی موبایل هایی که به شبکه Wi-Fi ما متصل هستند، صورت میگیرد. 📝 در این سناریو از دیوایس های واقعی استفاده میشود و از مجازی ساز ها ( مانند Nox و ... ) استفاده نمیشود و کاملا در محیط واقعی و کلاینت های واقعی انجام میشود. ⌨️ قراره یاد بگیریم با زبان پایتون دسترسی به پیامک ها و ... از موبایلی که به شبکه ما وصل هست بگیریم. 🔜 به زودی ... ✅ با ما همراه باشید ... 💪 حمایت کنید ... 〰〰〰〰〰 🌐 Website: LearnSecurity.ir 🎓 Channel: @LearnSecurityIR 🖥 Programming: @GozarIT | @PyFarsi 〰〰〰〰〰
آیا میدونستید میتونید با استفاده از کامنت # type: تو پایتون برای تعریف type annotation استفاده کنید؟😁 پ.ن: خودم شخصا برای ignore کردن یسری از خطاهای مربوط به همین type ها ازش استفاده میکردم ولی نمیدونستم این قابلیت هم داره
#سوال مشکل کد زیر از نظر type annotation چیست؟ def f(l: list[object], k: list[int]) -> None: l = k
#سوال مشکل کد زیر از نظر type annotation چیست؟ def f(l: list[object], k: list[int]) -> None: l = k
✔️ پایتون ۳.۱۳ با یک REPL جدید ریلیس میشه 😁😁 https://treyhunner.com/2024/05/my-favorite-python-3-dot-13-feature/ 〰️〰️〰️〰️〰️〰️〰️〰️〰️ 🔰Group: @PyFarsi 🔰Channel: @PSFarsi
Every dunder method in Python Link: https://pym.dev/every-dunder-method/ 〰️〰️〰️〰️〰️〰️〰️〰️〰️ 🔰Group: @PyFarsi 🔰Channel: @PSFarsi
✔️ الگوریتم Timsort بیاید تا یکی از سریعترین الگوریتمهای مرتبسازی که حدود ۲۲ ساله زندهست و از پایتون 2.3 الگوریتم مرتب سازی استاندارد پایتونه و همچنین توی جاوا و Rust و Android و GNU Octave و انجین V8 هم حضور داره رو کاملا مفصل بررسیش کنیم 😁 🔗 https://virgool.io/@liewpl/timsort-algorithm-u41h0wv0jnax 〰〰〰〰〰〰〰〰〰 🔰Group: @PyFarsi 🔰Channel: @PSFarsi
با سلام امروز در این مقاله قصد داریم کمی درباره ی ویژگی Specialized Adaptive Interpreter که در پایتون نسخه 3.11 اضافه شده صحبت کنیم: لینک مقاله: https://vrgl.ir/U39hy 〰️〰️〰️〰️〰️〰️〰️〰️〰️ 🔰Group: @PyFarsi 🔰Channel: @PSFarsi
Generators درود. میخواستم درباره ی آبجکت معروف و شناخته شده ی generator حرف بزنیم ولی با نگاه کمی متفاوت تر و به این برسیم که دقیقا چطور کار میکنه و چطور پیداش شد. نیاز هست که کمی حرف های پیش نیاز بزنیم صبور باشید. قبل از هر چیزی درباره ی خود فانکشن حرف بزنیم ولی نه تو پایتون بلکه تو C: وقتی یه فانکشنی کال میشه، توی call stack یک frame جدید میاد که برای اون فانکشن هست. این frame شامل تمام متغیر های لوکال و پارامتر های اون فانکشن هست. وقتی فانکشن تموم میشه چه اتفاقی میفته؟ اون frame از stack پاپ میشه(یا دقیق ترش stack pointer کم میشه) و نکته اینجاس که هرچی که توی اون frame هست دیگه قابل دسترس نیست و اگه استفادشون کنیم undefined behavior هست. چرا؟ چون توی "مموری استک" این frame قرار داده شده بود و اون فضا الان آزاد شده و قابل استفاده هست برای بقیه(توی پرانتز، تو C که مدیریت حافظه نداره، باید آبجکت هایی که توی heap میسازیم رو خودمون مدیریت کنیم نه استک): int *returnArray() { int arr[3] = {11, 22, 33}; printf("%p\n", arr); printf("%d\n", arr[1]); return &arr; } int main(void) { int *arr; arr = returnArray(); printf("%p\n", arr); printf("%d\n", arr[1]); // ??? } با اینکه آدرسش رو return کردیم ولی باز نمیتونیم به آیتم های لیست دسترسی داشته باشیم. حالا اینارو گفتم که موضوع مهمی رو بگم اونم اینکه تو پایتون هم همین call stack و اینا هست ولی اون frame object توی heap ساخته میشه. این به این معناس که اگه بخوایم میتونیم ذخیرش داشته باشیمش و همیشه بمونه! مثلا مانع از نابود شدن خودش و آبجکت های درونش بشیم. تو مثال زیر global f رو اگه از کامنت در بیارید obj از بین نمیره چون frame رو ذخیره کردیم: from gc import collect from sys import _getframe class A: def __del__(self): print("del called") def fn(): # global f f = _getframe(0) obj = A() fn() collect() input() خب حالا که اینو گفتیم بریم سراغ خود آبجکت فانکشن تو پایتون. وقتی فانکشن کال میشه یه frame object ساخته میشه. این frame object داخلش آبجکت های زیادی هست(مستقیم یا غیر مستقیم) از جمله رفرنسی داره به متغیر های داخل اون namespace و رفرنسی داره به code object که یک unit عه executable هست. داخل این code object ما bytecode ها رو داریم که همون instruction ها هستن. درواقع instruction ها هستن که اجرا میشن و این state ذخیره میشه. تو کد زیر lasti یعنی last instruction. (توی cpu هم اتفاق مشابهی میفته. اینجا pvm میخواد بدونه چیو اجرا کرده و حالا نوبت چیه): from sys import _getframe def fn(): print(_getframe(0).f_lasti) a = 10 print(_getframe(0).f_lasti) fn() خب حالا بخش جالب ماجرا اینجاس. ما به عنوان طراحان فرضی زبان پایتون، میدونیم که frame ما میتونه خارج از موقع کال شدن هم زنده بمونه + از طرفی به state هم که دسترسی داریم...( اینکه الان متغیر های local چیا هستن، اینکه الان تا instruction چندم اجرا شده و غیره) فقط یه مشکلی هست، فانکشن های ما وقتی کال میشن از اولین instruction تا آخرینش رو اجرا میکنن و تموم میشن و همه ی آبجکت های داخل اون frame از بین میرن(اگه رفرنس دیگه ای نداشته باشن جای دیگه). الان همه چیز محیا هست برای اینکه یه ساختار یا keyword جدیدی بیاریم تو زبان که هرجایی از execution فانکشن خواستیم بتونیم pause کنیم و اون رو با هر state ای که داره به حال خودش رها کنیم. بیایم yield رو معرفی کنیم! هروقت yield اومد، کافیه اجرا رو متوقف کنیم و مثل فانکشن ها(که بعد از تموم شدنشون، frame شون از stack frame جدا میشد) این generator ها رو هم frame شون رو جدا کنیم. بعدا اگه خواسیم generator رو ادامه بدیم و روش next بزنیم(مستقیم خودمون یا غیر مستقیم توسط پایتون) تنها کاری که باید بکنیم اینه که frame ش رو برداریم بچسبونیم به stack frame ممون و از اون state ای که بودیم ادامه بدیم. def gen(): a = 1 yield b = 1 yield g = gen() next(g) print(g.gi_frame.f_lasti, g.gi_frame.f_locals) next(g) print(g.gi_frame.f_lasti, g.gi_frame.f_locals) این call stack با linkedlist پیاده سازی شده و frame ها نود های اون هستن. با f_back به frame قبلی اشاره میکنن به راحتی وصل میشن و جدا میشن. جنریتور ها با وجود سرعت خوبی که دارن، برای سرعت بیشتر ساخته نشدن بلکه برای استفاده ی بهینه تر از مموری ساخته شدن. داشتن همچین آبجکتی(به اضافه ی ساختار هایی مثل yield from) میتونه زمینه ی خیلی چیز ها رو فراهم کنه. از جمله فریموورک هایی مثل asyncio :)