💡 تحسين أداء Python باستخدام Decorators 🚀
تعلم كيف تجعل دوالك أكثر كفاءة وقابلية للقراءة باستخدام Decorators في Python.
الـ Decorator هو نمط تصميم يسمح لك بإضافة وظائف جديدة إلى دالة موجودة مسبقاً دون تعديل هيكلها. في هذا المثال، الـ decorator `timer` يقيس وقت تنفيذ الدالة المزينة به `@timer`.
['#Python', '#Programming', '#Coding', '#Decorators', '#PythonTips', '#LearnToCode', '#SoftwareDevelopment']
تعلم كيف تجعل دوالك أكثر كفاءة وقابلية للقراءة باستخدام Decorators في Python.
def timer(func):
import time
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"الدالة {func.__name__} استغرقت {end_time - start_time:.4f} ثانية")
return result
return wrapper
@timer
def slow_function():
import time
time.sleep(2)
print("الوظيفة البطيئة اكتملت!")
slow_function()
الـ Decorator هو نمط تصميم يسمح لك بإضافة وظائف جديدة إلى دالة موجودة مسبقاً دون تعديل هيكلها. في هذا المثال، الـ decorator `timer` يقيس وقت تنفيذ الدالة المزينة به `@timer`.
['#Python', '#Programming', '#Coding', '#Decorators', '#PythonTips', '#LearnToCode', '#SoftwareDevelopment']
💡 تعلم اختصارات بايثون المفيدة! 🐍
هل تريد كتابة كود بايثون أسرع وأكثر فعالية؟ إليك بعض الاختصارات التي ستغير طريقة تفكيرك في كتابة الكود!
List comprehensions في بايثون توفر طريقة موجزة لإنشاء القوائم. بدلاً من استخدام حلقة `for` تقليدية مع `append`، يمكنك كتابة نفس المنطق في سطر واحد، مما يجعل الكود أقصر وأسهل للقراءة في كثير من الأحيان.
['#بايثون', '#برمجة', '#Python', '#CodingTips', '#ListComprehension', '#LearnToCode']
هل تريد كتابة كود بايثون أسرع وأكثر فعالية؟ إليك بعض الاختصارات التي ستغير طريقة تفكيرك في كتابة الكود!
numbers = [1, 2, 3, 4, 5]
# الطريقة التقليدية
squares_traditional = []
for num in numbers:
squares_traditional.append(num**2)
# باستخدام List Comprehension (الاختصار)
squares_comprehension = [num**2 for num in numbers]
print(f"Traditional: {squares_traditional}")
print(f"Comprehension: {squares_comprehension}")
List comprehensions في بايثون توفر طريقة موجزة لإنشاء القوائم. بدلاً من استخدام حلقة `for` تقليدية مع `append`، يمكنك كتابة نفس المنطق في سطر واحد، مما يجعل الكود أقصر وأسهل للقراءة في كثير من الأحيان.
['#بايثون', '#برمجة', '#Python', '#CodingTips', '#ListComprehension', '#LearnToCode']
✨ تحسين أداء Python: استخدام Walrus Operator 🐍
هل تريد كتابة كود Python أكثر إيجازًا وكفاءة؟ اكتشف كيف يمكن لمشغل Walrus (:=) مساعدتك في تبسيط عمليات الإسناد والتحقق في سطر واحد!
مشغل Walrus (:=) يسمح لك بإسناد قيمة لمتغير كجزء من تعبير. في المثال، نقوم بحساب الجذر التربيعي وإسناده للمتغير `root` في نفس الوقت الذي نتحقق فيه مما إذا كانت قيمته أكبر من 5، مما يجعل الكود أقصر وأكثر قابلية للقراءة.
['#Python', '#برمجة', '#WalrusOperator', '#Tips', '#CodeOptimization', '#LearnToCode']
هل تريد كتابة كود Python أكثر إيجازًا وكفاءة؟ اكتشف كيف يمكن لمشغل Walrus (:=) مساعدتك في تبسيط عمليات الإسناد والتحقق في سطر واحد!
from math import sqrt
numbers = [16, 25, 36, 49, 64]
# الطريقة التقليدية
for num in numbers:
root = sqrt(num)
if root > 5:
print(f"The square root of {num} is {root}")
# باستخدام Walrus Operator
print('\n--- Using Walrus Operator ---')
for num in numbers:
if (root := sqrt(num)) > 5:
print(f"The square root of {num} is {root}")
مشغل Walrus (:=) يسمح لك بإسناد قيمة لمتغير كجزء من تعبير. في المثال، نقوم بحساب الجذر التربيعي وإسناده للمتغير `root` في نفس الوقت الذي نتحقق فيه مما إذا كانت قيمته أكبر من 5، مما يجعل الكود أقصر وأكثر قابلية للقراءة.
['#Python', '#برمجة', '#WalrusOperator', '#Tips', '#CodeOptimization', '#LearnToCode']
🚀 تحسين أداء Python باستخدام Decorators!
هل تريد جعل كود Python الخاص بك أسرع وأكثر تنظيمًا؟ تعرف على Decorators وكيف يمكنها مساعدتك في ذلك!
الـ Decorators في Python تسمح لك بتعديل أو تعزيز سلوك الدوال أو الأصناف بطريقة نظيفة. في هذا المثال، الـ decorator `timer` يقيس الوقت الذي تستغرقه دالة معينة للتنفيذ دون الحاجة لتعديل الكود الأصلي للدالة نفسها. الرمز `@timer` هو طريقة مختصرة لتطبيق الـ decorator.
['#Python', '#Programming', '#Coding', '#Tutorial', '#Decorators', '#PythonTips', '#LearnToCode']
هل تريد جعل كود Python الخاص بك أسرع وأكثر تنظيمًا؟ تعرف على Decorators وكيف يمكنها مساعدتك في ذلك!
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"الدالة {func.__name__} استغرقت {end_time - start_time:.4f} ثانية")
return result
return wrapper
@timer
def my_slow_function(n):
time.sleep(n)
return "انتهى!"
print(my_slow_function(2))
الـ Decorators في Python تسمح لك بتعديل أو تعزيز سلوك الدوال أو الأصناف بطريقة نظيفة. في هذا المثال، الـ decorator `timer` يقيس الوقت الذي تستغرقه دالة معينة للتنفيذ دون الحاجة لتعديل الكود الأصلي للدالة نفسها. الرمز `@timer` هو طريقة مختصرة لتطبيق الـ decorator.
['#Python', '#Programming', '#Coding', '#Tutorial', '#Decorators', '#PythonTips', '#LearnToCode']
🚀 تحسين أداء Python: استخدام Walrus Operator 🐍
هل تعلم أن Python 3.8 قدمت عامل التعيين (:=) المعروف بـ 'Walrus Operator'؟ دعنا نرى كيف يمكن أن يبسط كودك ويجعله أكثر كفاءة!
الـ Walrus Operator يسمح لك بتعيين قيمة لمتغير كجزء من تعبير. في المثال، نبحث عن كلمة 'world'. بدلاً من البحث مرتين، نستخدم (:=) للبحث مرة واحدة وتعيين النتيجة للمتغير `match` في نفس سطر الشرط. هذا يقلل من تكرار الكود ويحسن القراءة.
['#Python', '#Programming', '#CodingTips', '#WalrusOperator', '#Python38', '#Developer', '#LearnToCode']
هل تعلم أن Python 3.8 قدمت عامل التعيين (:=) المعروف بـ 'Walrus Operator'؟ دعنا نرى كيف يمكن أن يبسط كودك ويجعله أكثر كفاءة!
import re
# الطريقة التقليدية
text = "Hello, world!"
if re.search(r'world', text):
match = re.search(r'world', text)
print(f"Found: {match.group()}")
# باستخدام Walrus Operator
if (match := re.search(r'world', text)):
print(f"Found: {match.group()}")
الـ Walrus Operator يسمح لك بتعيين قيمة لمتغير كجزء من تعبير. في المثال، نبحث عن كلمة 'world'. بدلاً من البحث مرتين، نستخدم (:=) للبحث مرة واحدة وتعيين النتيجة للمتغير `match` في نفس سطر الشرط. هذا يقلل من تكرار الكود ويحسن القراءة.
['#Python', '#Programming', '#CodingTips', '#WalrusOperator', '#Python38', '#Developer', '#LearnToCode']
🚀 تحسين أداء Python: استخدام `collections.deque` 🚀
هل تعاني من بطء عمليات الإضافة والحذف من بداية القوائم في Python؟ اكتشف كيف يمكن لـ `collections.deque` تسريع هذه العمليات بشكل كبير!
تُعد `collections.deque` (اختصار لـ double-ended queue) بنية بيانات مُحسّنة لعمليات الإضافة والحذف السريعة من كلا الطرفين (البداية والنهاية). على عكس القوائم القياسية في Python، حيث تكون عمليات `insert(0, ...)` و `pop(0)` بطيئة (تعقيد زمني O(n)) لأنها تتطلب إعادة ترتيب جميع العناصر، فإن عمليات `appendleft()` و `popleft()` في `deque` لها تعقيد زمني ثابت O(1). هذا يجعلها الخيار الأمثل عند التعامل مع طوابير الانتظار، أو سجلات الأحداث، أو أي سيناريو يتطلب تعديلات متكررة على أطراف مجموعة بيانات.
['#Python', '#Programming', '#DataStructures', '#Optimization', '#CodingTips', '#LearnToCode', '#PythonTips']
هل تعاني من بطء عمليات الإضافة والحذف من بداية القوائم في Python؟ اكتشف كيف يمكن لـ `collections.deque` تسريع هذه العمليات بشكل كبير!
from collections import deque
# إنشاء deque
my_deque = deque(['a', 'b', 'c'])
# إضافة عنصر إلى البداية (أسرع بكثير من list.insert(0, ...))
my_deque.appendleft('x')
print(my_deque) # deque(['x', 'a', 'b', 'c'])
# إضافة عنصر إلى النهاية
my_deque.append('y')
print(my_deque) # deque(['x', 'a', 'b', 'c', 'y'])
# حذف عنصر من البداية (أسرع بكثير من list.pop(0))
first_item = my_deque.popleft()
print(first_item) # x
print(my_deque) # deque(['a', 'b', 'c', 'y'])
# حذف عنصر من النهاية
last_item = my_deque.pop()
print(last_item) # y
print(my_deque) # deque(['a', 'b', 'c'])
# يمكنك أيضاً تحديد حجم أقصى للـ deque
limited_deque = deque(['a', 'b', 'c'], maxlen=3)
limited_deque.append('d')
print(limited_deque) # deque(['b', 'c', 'd']) # أقدم عنصر تم حذفه تلقائياً
تُعد `collections.deque` (اختصار لـ double-ended queue) بنية بيانات مُحسّنة لعمليات الإضافة والحذف السريعة من كلا الطرفين (البداية والنهاية). على عكس القوائم القياسية في Python، حيث تكون عمليات `insert(0, ...)` و `pop(0)` بطيئة (تعقيد زمني O(n)) لأنها تتطلب إعادة ترتيب جميع العناصر، فإن عمليات `appendleft()` و `popleft()` في `deque` لها تعقيد زمني ثابت O(1). هذا يجعلها الخيار الأمثل عند التعامل مع طوابير الانتظار، أو سجلات الأحداث، أو أي سيناريو يتطلب تعديلات متكررة على أطراف مجموعة بيانات.
['#Python', '#Programming', '#DataStructures', '#Optimization', '#CodingTips', '#LearnToCode', '#PythonTips']
✨ تعلم البرمجة بلغة بايثون: المتغيرات وأنواع البيانات ✨
مرحباً بكم في أول درس عملي لتعلم البرمجة باستخدام لغة بايثون! سنتعرف اليوم على أساسيات هامة: المتغيرات وأنواع البيانات.
في هذا الكود، قمنا بتعريف متغيرات لتخزين أنواع مختلفة من البيانات: نص (string)، عدد صحيح (integer)، عدد عشري (float)، وقيمة منطقية (boolean). الدالة `type()` تساعدنا في معرفة نوع البيانات التي يحتوي عليها كل متغير. هذه هي اللبنات الأساسية لأي برنامج!
['#بايثون', '#برمجة', '#تعلم_البرمجة', '#متغيرات', '#أنواع_البيانات', '#Python', '#Programming', '#LearnToCode']
مرحباً بكم في أول درس عملي لتعلم البرمجة باستخدام لغة بايثون! سنتعرف اليوم على أساسيات هامة: المتغيرات وأنواع البيانات.
name = "أحمد"
age = 30
height = 1.75
is_student = False
print(f"الاسم: {name}")
print(f"العمر: {age}")
print(f"الطول: {height}")
print(f"هل هو طالب؟ {is_student}")
print(type(name))
print(type(age))
print(type(height))
print(type(is_student))
في هذا الكود، قمنا بتعريف متغيرات لتخزين أنواع مختلفة من البيانات: نص (string)، عدد صحيح (integer)، عدد عشري (float)، وقيمة منطقية (boolean). الدالة `type()` تساعدنا في معرفة نوع البيانات التي يحتوي عليها كل متغير. هذه هي اللبنات الأساسية لأي برنامج!
['#بايثون', '#برمجة', '#تعلم_البرمجة', '#متغيرات', '#أنواع_البيانات', '#Python', '#Programming', '#LearnToCode']
👍1
✨ تلميح بايثون: استخدام `enumerate` للحصول على الفهرس والقيمة معًا! 🚀
هل سئمت من تتبع الفهرس يدويًا أثناء التكرار على القوائم في بايثون؟ استخدم `enumerate` لجعل الكود الخاص بك أكثر نظافة وكفاءة!
الدالة `enumerate()` تأخذ كائنًا قابلًا للتكرار (مثل القائمة) وتعيد كائن `enumerate` الذي ينتج أزواجًا من الفهرس والعنصر. هذا يبسط الوصول إلى كليهما في حلقة `for`.
['#Python', '#Programming', '#CodingTips', '#LearnToCode', '#PythonTips', '#enumerate']
هل سئمت من تتبع الفهرس يدويًا أثناء التكرار على القوائم في بايثون؟ استخدم `enumerate` لجعل الكود الخاص بك أكثر نظافة وكفاءة!
my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list):
print(f"Index: {index}, Value: {value}")
الدالة `enumerate()` تأخذ كائنًا قابلًا للتكرار (مثل القائمة) وتعيد كائن `enumerate` الذي ينتج أزواجًا من الفهرس والعنصر. هذا يبسط الوصول إلى كليهما في حلقة `for`.
['#Python', '#Programming', '#CodingTips', '#LearnToCode', '#PythonTips', '#enumerate']