پایتون فارسی(PyCore)
228 subscribers
205 photos
105 videos
57 files
243 links
🐉پایتون فارسی
🚀آموزش و اخبار دنیای تکنولوژی
Download Telegram
خب بیاید با یک پروژه ساده پیش بریم دایرکتوری کاری ما به شکل زیر خواهد بود
Plbenchmark-test
├── src
│   └── sorting_examples.py
└── test
    ├── conftest.py
    └── test_benchmark.p



توضیحات
در داخل فایل sorting_example.py سه الگوریتم مرتب سازی قرار دادیم

در فایل conftest.py دو نوع داده ورودی کوچک و بزرگ برای تست‌هامون ساختیم

در فایل test_benchmark.py تست‌هامون رو نوشتیم


با دستور زیر گروه sort_small رو اجرا میکنیم
pytest -m sort_small -v -s 
و خروجی سه تستی که برای اون نوشتیم رو میبینیم که شامل موارد ذکر شده در پست قبلی میباشد

با دستور زیر میتونیم هیستوگرام اون رو هم ببینیم
pip install pygal

pytest --benchmark-histogram -m sort-larg

هیستوگرام رو در یک تصویر در مسیر جاریتون خواهد ساخت هر تابع تست شده رو به شکل یک کندل نشون میده
در پست قبلی گفته بودیم که این کتابخونه پیش فرض بر روی زمان اجرا تمرکز دارد با دستور زیر و احرا کردن یک قسمت خاص از کدهای تست میتونید این مورد رو مشاهده کنید
pytest --benchmark-histogram -m benchmark

خروجی تست عملکرد در خط فرمان و هیستوگرام در یک فایل تصویری بصورت کندل
و با دستور زیر در هربار اجرا میتوانید بنچمارک رو ذخیره کنید
pytest -m sort_large --benchmark-autosave

در مسیر جاری و در دایرکتوری benchmarks. این فایل‌هارو مطابق با ورژن پایتون ذخیره میکند در ابتدای هر فایل یک مقدار چهر عددی قرار میده که بعدا از این برای مقابسه دو بنچمارک باهم استفاده میکنیم

جالبه بدونید که مشخصات سخت افزار و نود ،تاریخ و ورژن ، مشخصات پردازنده بصورت و ... روکامل هم ذخیره میکنه تا در هربار بنچمارک بتونید مقایسه کاملی انجام دهید
و اخرین دستور جهت مقایسه دو مقدار بنچمارک ذخیره شده
pytest-benchmark compare 0001 0002
نتایج خروجی رو در خط فرمان میتونید مشاهده کنید


و اما یک سوال
ایا اگر در تابع تستی نیاز به خوندن داده از کسیر خاصی یا دیتابیس خاصی باشد آیا این تایم صرف شده رو در بررسی سطح عملکر و محک تاثیر میده؟؟؟ طبق اسناد این کتابخونه خیر





#monitoring

#mahyar
👍4
کتابخانه pydantic یک‌همه کاره در validate!?

اگر قراره یک داده رو بصورت صفر تا صد validate کنید چه از لحاظ نوع داده که عدد باشه یا رشته یا حتی لیست یا دیکشنری باشه که داخلش مجموعه ای از استرینگ ها باشه
فیلد های داخل کلاس رو چک کنید مثلا پسورد و تکرار پسورد که هر کدوم ساختار خاصی داشته باشند مثل regix ها و ....
حتی پارامتری که به تابع پاس داده میشه رو میتونید با دکوریتوری که در اختیار میذاره قبل از پاسخ دادن چک کنه و اگه valid بود تازه پاس بده به تابع یا حتی نوع خروجی که تابع return می‌کنه رو چک کنه و کلی امکانات دیگه
یک مثال ساده
( pip install pydantic )ابتدا با دستور
کتابخانه رو نصب میکنید
حالا میخایم یک کلاس بسازیم که نام و شماره دانشجویی فرد رو بگیره و نوعش رو چک کنه

from pydantic import BaseModel

class NameValid(BaseModel):
name : str
number : int

user1 = NameValid (name="ali" , number = 12345 )
print(user1)

اگر همه چیز درست باشه دقیقا داده ها رو بهتون برمی گردونه اما اگه تایپ ها اشتباه باشه ValidationError برمی گردونه که میتونید با try و except مدیریتش کنید
داده های پاس داده شده میتونند بصورت Json باشند که در وب خیلی زیاد ازشون استفاده میشه
#M_Sh
@persians_python
👍5
پایتون فارسی(PyCore)
کتابخانه pydantic یک‌همه کاره در validate!? اگر قراره یک داده رو بصورت صفر تا صد validate کنید چه از لحاظ نوع داده که عدد باشه یا رشته یا حتی لیست یا دیکشنری باشه که داخلش مجموعه ای از استرینگ ها باشه فیلد های داخل کلاس رو چک کنید مثلا پسورد و تکرار پسورد…
امروز ۶ میلیون نفر pydantic رو دانلود کردن! pydantic تبدیل به یکی از پر استفاده ترین پکیج های پایتونی شده و در حال حاضر معدود پکیج هایی فقط بالاتر از pydantic هستند مثل numpy با ۹ میلیون دانلود روزانه. این در حالیه که fastapi فقط یک میلیون دانلود داشته. این آمار و ارقام نشون میده pydantic کامل وارد اکوسیستم پایتون شده و تو انواع پروژه ها استفاده میشه‌.

حتی در پروژه  های drf (django-rest-framework) هم بعضی ها به جای استفاده از از drf serializer از pydntic استفاده میکنن!
حالا چرا !؟ چون سرعت خیلی بالاتری نسبت به سریالایزر drf داره


مقاله های که این کار رو توضیح دادن زیادن، ولی خب اومدن یه پکیج واسطه استفاده کردن، ولی شما میتونی هم مستقیم آبجکت مدل جنگو رو با پایدانتیک سریالایز کنی.

مقاله اول
مقاله دوم

#pydantic
#Serializer

#mahyar
👍5
پایتون فارسی(PyCore)
خب بیاید با یک پروژه ساده پیش بریم دایرکتوری کاری ما به شکل زیر خواهد بود Plbenchmark-test ├── src │   └── sorting_examples.py └── test     ├── conftest.py     └── test_benchmark.p توضیحات در داخل فایل sorting_example.py سه الگوریتم مرتب سازی قرار دادیم…
در ادامه مبحث بنچمارکینگ روی یک پروژه جنگویی پیاده سازی میکنیم و در نهایت با تست عملکرد برای ویوهای ساخته شده با FBV ,CBV بررسی میکنیم عملکرد و محک زدن کدوم بهتره.(Class base view, function base view)

ابتدا یک پروژه جنگویی همراه یک اپ core ایجاد میکنیم
pip install django

django-admin startproject config .

python manage.py startapp core
در دایرکتوری config
فایل settings.py
INSTALLED_APPS = [
...   
"core",
]

فایل urls.py 
path('', include('core.urls')),
در اپ core کدهای زیر رو وارد میکنیم


models.py
class CategoryModel(models.Model):
    title = models.CharField(max_length=255)
views.py
from django.views.generic import DetailView, ListView
from .models import CategoryModel


def category_list_view(request):
    objs = CategoryModel.objects.all()
    return render(request, 'core/list.html', {"objs":objs})

def category_detail_view(request, pk):
    obj = CategoryModel.objects.get(id=pk)
    return render(request, 'core/detail.html', {"obj":obj})

class CategoryListView(ListView):
    model = CategoryModel
    template_name = 'core/list.html'
    context_object_name = 'objs'

class CategoryDetailView(DetailView):
    model = CategoryModel
    template_name='core/detail.html'
    context_object_name = 'obj'
urls.py
from .views import category_list_view, category_detail_view, CategoryDetailView, CategoryListView

app_name = 'core'

urlpatterns = [
    path('fbv/', category_list_view),
    path('fbv/<pk>/', category_detail_view),
    path('cbv/', CategoryListView.as_view()),
    path('cbv/<pk>/', CategoryDetailView.as_view()),
]
دستورات makemigrations و migrate رو فراموش نکنید

الزامات مربوط به templates در settings و فایلهای list.html , detail.html رو برای اپ core بصورت ساده انجام دهید


جهت راه اندازی بنچمارکینگ نیاز به نصب سه کتابخانه داریم
pip install pytest pytest-benchmark pytest-django

در دایرکتوری root پروژه یک فایل با نام pytest.ini ساخته کدهای زیر رو در ان قرار دهید
[pytest]
DJANGO_SETTINGS_MODULE = config.settings

دلیل اینکار ازین بابت هست که بخشی از کدهای ما وابسته به اجرا شدن پروژه جنگویی می‌باشد و اجرا کردن پروژه جنگویی با صدا زدن فایل تنظیمات آن می‌باشد و به این صورت pytest اینکار رو انجام میدهد


دایرکتوری tests ساخته و داخل ان فایل test_view.py رو میسازیم و کدهای زیر رو داخل اون میزاریم
import pytest
from core.models import CategoryModel
from django.test import RequestFactory
from core.views import category_list_view, category_detail_view, CategoryListView, CategoryDetailView


@pytest.fixture
def rf():
    return RequestFactory()

@pytest.mark.fbv
def test_fbv_list(benchmark, rf):
    request = rf.get('/fbv/')
    result = benchmark(category_list_view, request)
    assert result.status_code == 200

@pytest.mark.fbv
@pytest.mark.django_db
def test_fbv_detail(benchmark, rf):
    blog_comment = CategoryModel.objects.create(title='Test')
    request = rf.get(f'/fbv/{blog_comment.pk}/')
    result = benchmark(category_detail_view, request, pk=blog_comment.pk)
    assert result.status_code == 200

@pytest.mark.cbv
def test_cbv_list(benchmark, rf):
    request = rf.get('/cbv/')
    view = CategoryListView.as_view()
    result = benchmark(view, request)
    assert result.status_code == 200

@pytest.mark.cbv
@pytest.mark.django_db
def test_cbv_detail(benchmark, rf):
    blog_comment = CategoryModel.objects.create(title='Test')
    request = rf.get(f'/cbv/{blog_comment.pk}/') 
    view = CategoryDetailView.as_view()
    result = benchmark(view, request, pk=blog_comment.pk)
    assert result.status_code == 200


دستورات زیر رو در خط فرمان بزنید
pytest -m cbv --benchmark-autosave

pytest -m fbv --benchmark-autosave

pytest-benchmark compare 0001 0002


خروجی بنچمارکینگ و تست عملکرد رو برای ویوهای FBV و CBV در جنگو رو باهم میتونید مقایسه کنید



#monitoring

#mahyar
👍5👎1
سلام به همگی
از فردا کلاس ها طبق ساعت های که بوده برگزار میشه لطفاً کسی غیبت نداشته باشه که از مباحث جا بمونه
👍3
Django rich-text editors.pdf
502.3 KB
معرفی انواع ویرایشگر های متن (rich-text editor) در جنگو

خیلی پیش میاد در پروژه هایی که مبتنی بر render یا django templateهستش بخواید از یک ویرایشگر متن خیلی خوب برای تولید محتوا استفاده کنین.

تمام ویرایشگر های متنی خصوصیت های مشترکی دارن منتهی بعضی هاشون توی ساز و کار جنگو بهتون قابلیت آپلود عکس و در کل کار با media ها رو هم فراهم می کنن و جایگاهشون خاص تر میشه.

البته شما می تونین بدون استفاده از این ماژول ها هم بر حسب نیازتون به صورت مستقیم از این ها ساتفاده کنین ولی خوب باید تنظیمات متفاوتی رو درش اعمال کنین که معمولا زمان بر هستش. از جمله ویرایشگر های جنگو میشه به این ها اشاره کرد، البته فقط محدود به این ها نیستن:
django-ckeditor - django-froala-editor - django-summernote - django-quill - django-tinymce

البته که جنگو محدود به این ها نیستش و می تونین ماژول های متفاوتی هم توسعه بدید و یا پیدا کنین ولی این ماژول ها جزو پر مصرف ترین ها به شمار میان.

انتخاب خودم:
من به شخصه بیشتر از ckeditor استفاده می کنم به خصوص اینکه پشتیبانی از آپلود فایل رو هم داره

مبنع


#djnago
#mahyar
👍4
انشالله در آینده یکم دوباره میریم سمت پایتون، تا بچه های دوره پایتون هم بتونن از مطالب استفاده کنن و کانال براشون مفید باشه.


همچنین اگر دوست دارید راجب موضوع خاصی از پایتون پست بزاریم و درموردش بیشتر حرف بزنیم توی کامنت بگید.

#mahyar
👍4
۳۰ شرکت بزرگ دنیا که از پایتون استفاده می کنند
#M_Sh
@persians_python
👎3👌1
تفاوت درک کردن و مدرک داشتن
#S_Ry
👍9
🔵مهارت های برنامه نویس وب

#SADRA_K
🐍 @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
💻 نقشه‌ی کلی برای یادگیری پایتون✔️

#SADRA_K
🐍 @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🧑‍💻 پیاده سازی های مختلف برای پایتون 💻

💥CPython
💥Rubypython
💥MicroPython

❗️جزئیات بیشتر در بخش کامنت ها (دیدگاه)


#SADRA_K
🐍 @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
توابع مفید پایتونی🔥
این قسمت:  لامبدا
🥸

لامبدا در پایتون به عنوان یک ابزار بسیار قدرتمند استفاده می‌شود که به شما این امکان را می‌دهد که توابع کوتاه و مفیدی را در یک خط کد تعریف کنید. گاهی اوقات به آن به عنوان توابع ناشناخته یا توابع بدون نام هم اشاره می‌شود.

لامبداها معمولاً در جاهایی استفاده می‌شوند که نیاز به تعریف یک تابع کوتاه و موقت دارید، بدون اینکه نیازی به تعریف یک تابع کامل باشد.

برای تعریف یک لامبدا در پایتون، از واژه کلیدی lambda استفاده می‌شود. سینتکس کلی آن به صورت زیر است:

lambda arguments: expression

در اینجا:
- arguments: ورودی‌های تابع به صورت آرگومان‌ها مشخص می‌شوند.
- expression: عبارتی که تابع باید انجام دهد.

برای مثال، اگر بخواهیم یک تابع لامبدا بنویسیم که دو عدد را جمع کند، کد زیر را می‌توانیم بنویسیم:

add = lambda x, y: x + y
print(add(3, 5))  # Output: 8


در این مثال، lambda x, y: x + y یک تابع لامبدا است که دو آرگومان x و y را می‌گیرد و جمع آن‌ها را برمی‌گرداند.                                                                                                                                                                                      توابع لامبدا به صورت پیشفرض خروجی تابع را return میکنند پس برای استفاده باید آنهارا پرینت کنید.

#lambda
#mahyar
👍4👌1
0️⃣1️⃣ ابزار برتر دیتاساینس 📇

#SADRA_K
🐍 @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👌2
⌨️ بهترین زبان های برنامه نویسی در سال 🎄

💻 زبان پایتون در رتبه 1️⃣

#SADRA_K
🐍 @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👌3
🆓 سایت های آموزشی رایگان

💻 پایتون: w3schools.com

#SADRA_K
🐍 @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👌2