✔️ استفاده از متد جادویی __call__ در پایتون
متد
فرض کنید میخواهیم یک کلاس به نام
1. متد __init__: عامل (factor) را تنظیم میکند.
2. متد __call__: ورودی را با عامل از پیشتعریف شده ضرب کرده و نتیجه را برمیگرداند.
با این روش، میتوان از هر شیء کلاس
#Python #Programming
☑️ @QCode_ir | برنامه نویسی
متد
__call__ در پایتون به شما اجازه میدهد تا یک شیء از کلاس خود را مثل یک تابع فراخوانی کنید. این کار میتواند در سناریوهایی که نیاز به پردازش پیچیده دارید، بسیار مفید باشد.فرض کنید میخواهیم یک کلاس به نام
Multiplier ایجاد کنیم که هر بار شیء آن مثل تابع فراخوانی میشود، ورودیها را با یک مقدار خاصی که در ابتدا تنظیم شده، ضرب کند.class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, value):
return value * self.factor
# استفاده از کلاس
double = Multiplier(2)
triple = Multiplier(3)
print(double(5)) # خروجی: 10
print(triple(5)) # خروجی: 15
1. متد __init__: عامل (factor) را تنظیم میکند.
2. متد __call__: ورودی را با عامل از پیشتعریف شده ضرب کرده و نتیجه را برمیگرداند.
با این روش، میتوان از هر شیء کلاس
Multiplier به عنوان یک تابع استفاده کرد و در عین حال از ویژگیهای شیءگرایی بهره برد.#Python #Programming
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ آشنایی با Walrus Operator در پایتون (به معنی شیرآبی)
در نسخه ۳.۸ پایتون، اپراتوری به نام Walrus Operator (با نماد
فرض کنید میخواهیم طول کلماتی از یک لیست را بررسی کنیم و فقط کلماتی که طولشان بیش از ۳ کاراکتر است را چاپ کنیم.
➖ بدون Walrus Operator:
➕ با Walrus Operator:
در کد دوم، مقدار طول کلمه (با نام
مثال های دیگر:
➕ حلقههای ورودی:
➕ خواندن از فایل:
#Python
💻 @qcode_ir | برنامه نویسی
در نسخه ۳.۸ پایتون، اپراتوری به نام Walrus Operator (با نماد
:=) معرفی شد که هدف آن سادهتر کردن کدنویسی در شرایط خاص است. این اپراتور به شما اجازه میدهد همزمان یک مقدار را به یک متغیر اختصاص دهید و از آن استفاده کنید. فرض کنید میخواهیم طول کلماتی از یک لیست را بررسی کنیم و فقط کلماتی که طولشان بیش از ۳ کاراکتر است را چاپ کنیم.
➖ بدون Walrus Operator:
words = ["apple", "pie", "banana", "kiwi"]
for word in words:
if len(word) > 3:
print(word)
➕ با Walrus Operator:
words = ["apple", "pie", "banana", "kiwi"]
for word in words:
if (length := len(word)) > 3:
print(f"{word} (length: {length})")
در کد دوم، مقدار طول کلمه (با نام
length) محاسبه شده و همزمان در شرط و چاپ استفاده میشود، بدون نیاز به محاسبه مجدد.مثال های دیگر:
➕ حلقههای ورودی:
while (user_input := input("Enter something: ")) != "exit":
print(f"You entered: {user_input}")➕ خواندن از فایل:
with open("data.txt") as file:
while (line := file.readline().strip()):
print(line)#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️چطور محتویات داخل یک شی (Object) را ببینیم؟
وقتی در پایتون با آبجکتها کار میکنید، گاهی لازم است تمامی ویژگیها و مقادیر داخلی آن را بررسی کنید. در پایتون، هر آبجکت ویژگیای به نام
فرض کنید یک کلاس ساده داریم:
خروجی:
#برنامهنویسی #پایتون #python
⭐️ @QCode_ir
وقتی در پایتون با آبجکتها کار میکنید، گاهی لازم است تمامی ویژگیها و مقادیر داخلی آن را بررسی کنید. در پایتون، هر آبجکت ویژگیای به نام
__dict__ دارد که تمام ویژگیهای آن آبجکت را به صورت دیکشنری ذخیره میکند.فرض کنید یک کلاس ساده داریم:
class User:
def __init__(self, name, age):
self.name = name
self.age = age
self.skills = ["Python", "Django"]
user = User("Yousef", 27)
print(user.__dict__)
خروجی:
{'name': 'Yousef', 'age': 27, 'skills': ['Python', 'Django']}#برنامهنویسی #پایتون #python
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ پیدا کردن کدهای بیاستفاده در پروژه پایتون با ابزار Vulture 🐍
گاهی اوقات در پروژههای پایتون، کدهایی وجود دارند که دیگر استفاده نمیشوند، اما همچنان در فایلها باقی ماندهاند. این کدها میتوانند شامل توابع، کلاسها یا حتی متغیرهایی باشند که هیچ جایی فراخوانی نمیشوند. Vulture یک ابزار فوقالعاده برای شناسایی این کدهای بیاستفاده است.
برای نصب این ابزار، کافی است از دستور زیر استفاده کنید:
برای اجرا، تنها کافی است نام فایل یا پوشه پروژه خود را به Vulture بدهید:
این ابزار گزارشی از کدهایی که احتمالاً بیاستفاده هستند، نمایش میدهد.
#برنامهنویسی #پایتون #python
⭐️ @QCode_ir
گاهی اوقات در پروژههای پایتون، کدهایی وجود دارند که دیگر استفاده نمیشوند، اما همچنان در فایلها باقی ماندهاند. این کدها میتوانند شامل توابع، کلاسها یا حتی متغیرهایی باشند که هیچ جایی فراخوانی نمیشوند. Vulture یک ابزار فوقالعاده برای شناسایی این کدهای بیاستفاده است.
برای نصب این ابزار، کافی است از دستور زیر استفاده کنید:
pip install vulture
برای اجرا، تنها کافی است نام فایل یا پوشه پروژه خود را به Vulture بدهید:
vulture your_project/
این ابزار گزارشی از کدهایی که احتمالاً بیاستفاده هستند، نمایش میدهد.
#برنامهنویسی #پایتون #python
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ تشخیص عدد زوج در پایتون با یک روش سریعتر!
در پایتون معمولاً برای تشخیص عدد زوج از این روش استفاده میکنیم:
اما یک روش جالبتر و بهینهتر هم وجود دارد که از عملیات بیتی استفاده میکند:
در این روش، عملگر
این روش در بسیاری از زبانهای برنامهنویسی مثل پایتون، C، C++، جاوا و Go کار میکند. چون عملیات بیتی ذاتاً سبکتر از مدولوس
#پایتون #Python
⭐️ @QCode_ir
در پایتون معمولاً برای تشخیص عدد زوج از این روش استفاده میکنیم:
if num % 2 == 0:
اما یک روش جالبتر و بهینهتر هم وجود دارد که از عملیات بیتی استفاده میکند:
if (num & 1) == 0:
در این روش، عملگر
& آخرین بیت عدد را بررسی میکند. در نمایش باینری، اعداد زوج همیشه آخرین بیتشان 0 است، بنابراین نتیجهی این بررسی 0 میشود و تشخیص عدد زوج بهسادگی انجام میگیرد. این روش در بسیاری از زبانهای برنامهنویسی مثل پایتون، C، C++، جاوا و Go کار میکند. چون عملیات بیتی ذاتاً سبکتر از مدولوس
% است، در برخی زبانها عملکرد سریعتری دارد. #پایتون #Python
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ جنگو 5.2 منتشر شد!
نسخهی جدید جنگو (Django 5.2) با ویژگیهای زیر منتشر شد:
+ ایمپورت خودکار مدلها در شل
+ پشتیبانی از کلیدهای اصلی ترکیبی (Composite Primary Keys) 😲
+ بهبود در نحوهی override کردن BoundField
این نسخه LTS (پشتیبانی طولانیمدت) است و تا آوریل 2028 پشتیبانی خواهد شد.
Django 5.2 Release Notes
#Django #Python
⭐️ @QCode_ir
نسخهی جدید جنگو (Django 5.2) با ویژگیهای زیر منتشر شد:
+ ایمپورت خودکار مدلها در شل
+ پشتیبانی از کلیدهای اصلی ترکیبی (Composite Primary Keys) 😲
+ بهبود در نحوهی override کردن BoundField
این نسخه LTS (پشتیبانی طولانیمدت) است و تا آوریل 2028 پشتیبانی خواهد شد.
Django 5.2 Release Notes
#Django #Python
Please open Telegram to view this post
VIEW IN TELEGRAM