بايثون العرب
10.5K subscribers
866 photos
183 videos
768 links
Download Telegram
🚀 تحسين أداء Python باستخدام List Comprehensions

هل تريد كتابة كود Python أكثر إيجازًا وكفاءة؟ دعنا نستكشف قوة List Comprehensions!

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)


List comprehensions توفر طريقة موجزة لإنشاء القوائم. بدلاً من كتابة حلقة for تقليدية، يمكنك تحقيق نفس النتيجة في سطر واحد، مما يجعل الكود أسهل للقراءة وأسرع في التنفيذ.

['#Python', '#برمجة', '#ListComprehensions', '#تطوير', '#كود']
💡 نصيحة بايثون: استخدام Walrus Operator (:=) 🚀

هل سئمت من تكرار المتغيرات في شروطك؟ عامل Walrus الجديد في بايثون (:=) يحل هذه المشكلة بذكاء!

import re

text = "Hello, world!"
if (match := re.search(r"world", text)):
print(f"Found: {match.group()}")
else:
print("Not found")


عامل Walrus (:=) يسمح لك بتعيين قيمة لمتغير داخل تعبير. في هذا المثال، نبحث عن كلمة 'world' في النص. إذا تم العثور عليها، يتم تعيين نتيجة البحث للمتغير 'match' ثم يتم استخدام 'match' مباشرة في جملة if. هذا يجعل الكود أقصر وأكثر قابلية للقراءة.

['#Python', '#Programming', '#CodingTips', '#Developer', '#Python3', '#WalrusOperator']
🚀 تحسين أداء Python: استخدام `enumerate` بكفاءة!

هل سئمت من كتابة عدادات يدوية في حلقات Python؟ دعنا نكتشف كيف يمكن لدالة `enumerate` أن تجعل كودك أنظف وأكثر كفاءة!

my_list = ['تفاحة', 'موزة', 'كرز']

for index, value in enumerate(my_list):
print(f"العنصر رقم {index}: {value}")

# يمكنك تحديد قيمة بداية للعداد
for index, value in enumerate(my_list, start=1):
print(f"العنصر رقم {index}: {value}")


تسمح لك دالة `enumerate` بالحصول على كل من الفهرس (index) والقيمة (value) لكل عنصر أثناء المرور على قائمة أو أي كائن قابل للتكرار. هذا يلغي الحاجة إلى تتبع الفهرس يدويًا، مما يجعل الكود أكثر قابلية للقراءة. يمكنك أيضًا تحديد قيمة بداية للعداد باستخدام المعامل `start`.

['#Python', '#برمجة', '#تعلم_البرمجة', '#PythonTips', '#enumerate', '#كود_نظيف']
🚀 تحسين أداء Python: استخدام `__slots__`

هل تعاني من استهلاك ذاكرة كبير في كائنات Python؟ اكتشف كيف يمكن لـ `__slots__` أن يساعدك في تحسين الأداء وتقليل استهلاك الذاكرة بشكل كبير!

class Point:
__slots__ = ('x', 'y')

def __init__(self, x, y):
self.x = x
self.y = y

# بدون __slots__
class PointWithoutSlots:
def __init__(self, x, y):
self.x = x
self.y = y

import sys

# مقارنة حجم الذاكرة
point1 = Point(1, 2)
point2 = PointWithoutSlots(1, 2)

print(f'حجم الذاكرة لكائن Point (مع __slots__): {sys.getsizeof(point1)} بايت')
print(f'حجم الذاكرة لكائن PointWithoutSlots (بدون __slots__): {sys.getsizeof(point2)} بايت')


عندما تنشئ كائنًا في Python بدون `__slots__`، يقوم Python بإنشاء قاموس (`__dict__`) لتخزين سمات الكائن. هذا يوفر مرونة ولكنه يستهلك ذاكرة إضافية. بتعريف `__slots__`، أنت تخبر Python بتخصيص مساحة ثابتة لكل سمة محددة، مما يلغي الحاجة إلى `__dict__` ويقلل بشكل كبير من استهلاك الذاكرة، خاصة عند إنشاء عدد كبير من الكائنات. لاحظ أن استخدام `__slots__` يمنع إضافة سمات جديدة ديناميكيًا بعد الإنشاء.

['#Python', '#برمجة', '#تحسين_الأداء', '#تطوير_البرمجيات', '#PythonTips', '#علم_البيانات', '#Backend']
💡 تعلم اختصارات لوحة المفاتيح في بايثون! 🐍

هل سئمت من استخدام الماوس باستمرار أثناء البرمجة؟ تعرف على بعض اختصارات لوحة المفاتيح المفيدة في بيئات تطوير بايثون لزيادة إنتاجيتك!

print('Hello, World!')
# اختصارات شائعة:
# Ctrl+C: نسخ
# Ctrl+V: لصق
# Ctrl+X: قص
# Ctrl+Z: تراجع
# Ctrl+S: حفظ
# Ctrl+F: بحث
# Ctrl+Shift+F: بحث شامل
# Ctrl+A: تحديد الكل
# Ctrl+B: تشغيل الكود (في بعض البيئات)
# Ctrl+D: حذف السطر الحالي (في بعض البيئات)
# Alt+Shift+Up/Down: نسخ السطر لأعلى/لأسفل (في بعض البيئات)


هذه الاختصارات تختلف قليلاً بين محررات الأكواد وبيئات التطوير المتكاملة (IDEs). قم بتجربة هذه الاختصارات في بيئتك المفضلة لتسريع عملية كتابة الكود وتعديله.

['#بايثون', '#برمجة', '#اختصارات', '#لوحة_المفاتيح', '#تطوير', '#Python', '#Programming', '#Shortcuts']
💡 نصيحة بايثون سريعة: استخدام enumerate() 💡

هل سئمت من تتبع الفهارس يدويًا في حلقات التكرار؟ إليك طريقة بايثون أنيقة لتجنب ذلك!

my_list = ['تفاحة', 'موزة', 'كرز']
for index, value in enumerate(my_list):
print(f'العنصر في الفهرس {index} هو: {value}')


الدالة `enumerate()` تسمح لك بالتكرار عبر قائمة (أو أي تسلسل آخر) والحصول على كل من الفهرس والقيمة في كل خطوة. تجعل الكود الخاص بك أكثر وضوحًا وقابلية للقراءة.

['#بايثون', '#برمجة', '#نصائح_برمجية', '#enumerate', '#Python']
✨ تحسين أداء Python: استخدام `enumerate` بكفاءة ✨

هل سئمت من كتابة عدادات يدوية في حلقات Python؟ دعنا نتعرف على `enumerate` وكيف تجعل الكود الخاص بك أكثر أناقة وكفاءة!

my_list = ['تفاحة', 'موز', 'كرز']

for index, value in enumerate(my_list):
print(f"العنصر رقم {index} هو: {value}")

# يمكنك أيضاً تحديد نقطة بداية للعد
for index, value in enumerate(my_list, start=1):
print(f"العنصر رقم {index} هو: {value}")


الدالة `enumerate()` تسمح لك بالمرور على قائمة (أو أي كائن قابل للتكرار) مع الحصول على كل من الفهرس (index) والقيمة (value) في نفس الوقت. هذا يلغي الحاجة لتعريف متغير عداد منفصل ويزيد من قابلية قراءة الكود. يمكن أيضاً تحديد قيمة البداية للعداد باستخدام الوسيط `start`.

['#Python', '#برمجة', '#تعليم_برمجة', '#enumerate', '#كود_نظيف', '#نصائح_برمجة']
❤1
🚀 تحسين أداء Python: استخدام List Comprehensions

هل تبحث عن طريقة لكتابة كود Python أكثر إيجازًا وفعالية؟ تعرف على List Comprehensions وكيف يمكنها تبسيط عمليات إنشاء القوائم!

numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares)


List Comprehensions توفر طريقة أنيقة لإنشاء القوائم. في هذا المثال، ننشئ قائمة 'squares' تحتوي على مربعات كل رقم في القائمة الأصلية 'numbers' في سطر واحد فقط.

['#Python', '#برمجة', '#ListComprehensions', '#تطوير', '#كود']
🚀 تحسين أداء Python: فهم GIL

هل تساءلت يومًا لماذا قد لا تستفيد برامج Python المتعددة الخيوط (multithreaded) دائمًا من المعالجات متعددة النوى؟ الجواب يكمن في Global Interpreter Lock (GIL). دعنا نتعمق!

import threading
import time

def cpu_bound_task():
count = 0
while count < 100000000:
count += 1

start_time = time.time()

thread1 = threading.Thread(target=cpu_bound_task)
thread2 = threading.Thread(target=cpu_bound_task)

thread1.start()
thread2.start()

thread1.join()
thread2.join()

end_time = time.time()
print(f"الوقت المستغرق: {end_time - start_time:.2f} ثانية")


في هذا الكود، نقوم بتشغيل مهمتين تستهلكان وحدة المعالجة المركزية (CPU-bound) بالتوازي باستخدام الخيوط. ومع ذلك، بسبب GIL، لن يتمكن سوى خيط واحد من تنفيذ كود Python في أي وقت، مما يحد من الاستفادة الحقيقية من تعدد النوى. للمهام التي تستهلك وحدة المعالجة المركزية، غالبًا ما تكون مكتبات مثل `multiprocessing` أو استخدام لغات أخرى أفضل.

['#Python', '#برمجة', '#GIL', '#تعدد_الخيوط', '#تحسين_الأداء', '#علوم_البيانات']
💡 تحسين أداء Python باستخدام List Comprehensions!

هل تبحث عن طريقة لكتابة أكواد Python أكثر إيجازًا وكفاءة؟ إليك لمحة سريعة عن List Comprehensions!

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)


List Comprehensions توفر طريقة مختصرة لإنشاء القوائم. بدلًا من كتابة حلقة for تقليدية، يمكنك كتابة نفس المنطق في سطر واحد، مما يجعل الكود أسهل في القراءة وأسرع في التنفيذ.

['#Python', '#برمجة', '#ListComprehensions', '#تطوير', '#نصائح_برمجية']
✨ تحسين استخدام الذاكرة في Python: دليل سريع

هل تعاني من استهلاك ذاكرة عالٍ في برامج Python الخاصة بك؟ إليك طريقة بسيطة وفعالة لتحسين ذلك باستخدام المولدات (Generators).

def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1

# استخدام المولد
counter = count_up_to(1000000)

# يمكنك المرور على القيم دون تحميلها كلها في الذاكرة
# for number in counter:
# print(number)


بدلاً من إنشاء قائمة كاملة في الذاكرة (مثل list(range(1, 1000001))), يستخدم المولد `yield` لإرجاع القيم واحدة تلو الأخرى عند الحاجة. هذا يقلل بشكل كبير من استهلاك الذاكرة، خاصة مع مجموعات البيانات الكبيرة.

['#Python', '#برمجة', '#تحسين_الأداء', '#الذاكرة', '#Generators', '#مطور_بايثون']