بايثون العرب
10.5K subscribers
866 photos
183 videos
768 links
Download Telegram
💡 نصيحة بايثون: استخدام 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', '#مطور_بايثون']
💡 تحسين أداء 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', '#تطوير', '#نصائح_برمجة']
❤1
🚀 تحسين أداء Python مع List Comprehensions!

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

squares = [x**2 for x in range(10)]
print(squares)

even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)


List comprehensions توفر طريقة مختصرة لإنشاء قوائم. السطر الأول ينشئ قائمة بمربعات الأرقام من 0 إلى 9. السطر الثاني يضيف شرطًا ليتم تضمين المربعات الزوجية فقط.

['#Python', '#برمجة', '#ListComprehensions', '#كود', '#تعلم_البرمجة']
💡 نصيحة بايثون: استخدام walrus operator (:=) بكفاءة!

هل سئمت من تكرار نفس المتغيرات في شرطك؟ دعنا نكتشف كيف يمكن لـ walrus operator (:=) تبسيط الكود الخاص بك وجعله أكثر قابلية للقراءة!

name = input('أدخل اسمك: ')

if (n := len(name)) > 5:
print(f'اسمك طويل جداً، طوله {n} حرفاً!')
else:
print(f'اسمك قصير ولطيف، طوله {n} حرفاً!')


في هذا المثال، قمنا بتعيين طول الاسم للمتغير `n` مباشرة داخل جملة `if` باستخدام `:=`. هذا يوفر علينا سطرًا إضافيًا لتعيين المتغير قبل الشرط، مما يجعل الكود أكثر إيجازًا.

['#Python', '#برمجة', '#نصائح_بايثون', '#WalrusOperator', '#كود_نظيف']
✨ تحسين أداء Python باستخدام List Comprehensions!

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

squares = [x**2 for x in range(10)]
print(squares)

even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)


List Comprehensions توفر طريقة مختصرة لإنشاء القوائم. السطر الأول ينشئ قائمة بمربعات الأرقام من 0 إلى 9. السطر الثاني يضيف شرطًا لإنشاء قائمة بمربعات الأرقام الزوجية فقط.

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

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

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


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

['#Python', '#برمجة', '#ListComprehensions', '#تطوير', '#كود']
💡 نصيحة بايثون سريعة: استخدام f-strings للطباعة! 🐍

هل سئمت من كتابة سلاسل نصية معقدة في بايثون؟ إليك طريقة أسهل وأكثر قراءة باستخدام f-strings!

name = "علي"
age = 30
print(f"اسمي هو {name} وعمري {age} عاماً.")


f-strings (formatted string literals) تسمح لك بتضمين المتغيرات والتعبيرات مباشرة داخل السلاسل النصية بوضع حرف 'f' قبل علامات التنصيص. هذا يجعل الكود الخاص بك أنظف وأسهل للفهم.

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

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

fruits = ['apple', 'banana', 'cherry']

# الطريقة التقليدية (غير فعالة)
index = 0
for fruit in fruits:
print(f'Index: {index}, Fruit: {fruit}')
index += 1

print('\n--- باستخدام enumerate ---\n')

# الطريقة باستخدام enumerate (أكثر كفاءة وأناقة)
for index, fruit in enumerate(fruits):
print(f'Index: {index}, Fruit: {fruit}')

print('\n--- تحديد نقطة بداية لـ enumerate ---\n')

# يمكنك تحديد نقطة بداية للعداد
for index, fruit in enumerate(fruits, start=1):
print(f'Item #{index}: {fruit}')


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

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

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

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


الدالة `enumerate` في Python تسمح لك بالمرور على قائمة (أو أي iterable آخر) والحصول على كل من الفهرس (index) والقيمة (value) في كل تكرار. هذا يجعل الكود أنظف وأسهل للقراءة.

['#Python', '#برمجة', '#تطوير', '#نصائح_برمجية', '#enumerate']
🐍 تحسين أداء Python: دليل سريع للمبتدئين

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

def sum_list_naive(numbers):
total = 0
for num in numbers:
total += num
return total

import timeit

my_list = list(range(1000000))

time_naive = timeit.timeit(lambda: sum_list_naive(my_list), number=100)

print(f"الوقت المستغرق للطريقة البسيطة: {time_naive:.6f} ثانية")

def sum_list_optimized(numbers):
return sum(numbers)

time_optimized = timeit.timeit(lambda: sum_list_optimized(my_list), number=100)

print(f"الوقت المستغرق للطريقة المحسنة: {time_optimized:.6f} ثانية")


في هذا المثال، نقارن بين طريقة يدوية لجمع عناصر قائمة وطريقة استخدام الدالة المدمجة `sum()`. كما ترى، الدالة المدمجة أسرع بكثير لأنها مكتوبة بلغة C ومُحسّنة للغاية. القاعدة العامة: استخدم الدوال المدمجة والمكتبات القياسية كلما أمكن ذلك لضمان أفضل أداء.

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

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

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


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

['#Python', '#برمجة', '#ListComprehensions', '#كود', '#تعلم_البرمجة']