بايثون العرب
10.4K subscribers
875 photos
183 videos
773 links
Download Telegram
✨ نصيحة بايثون سريعة: استخدام underscore (_) في بايثون 🐍

هل تساءلت يومًا عن معنى الـ underscore (_) في أكواد بايثون؟ إليك شرح موجز لاستخداماته المتعددة والمفيدة!

print(1000000)
print(1_000_000)

x, _ = (1, 2)
print(x)

# في حلقة تكرارية، لتجاهل قيمة
for _ in range(3):
print("مرحباً!")

# في بعض المكتبات، للإشارة إلى متغير خاص أو غير مستخدم
class MyClass:
def __init__(self):
self._private_var = 10
self.__mangled_var = 20

def _protected_method(self):
print("هذه دالة محمية")

def __private_method(self):
print("هذه دالة خاصة")

obj = MyClass()
print(obj._private_var)
obj._protected_method()


الـ underscore (_) له استخدامات متنوعة في بايثون:
1. **فواصل للأرقام:** لتسهيل قراءة الأرقام الكبيرة (مثل 1_000_000).
2. **تجاهل القيم:** عند فك حزم (unpacking) القيم وتريد تجاهل بعضها (مثل x, _ = (1, 2)).
3. **حلقات التكرار:** لتجاهل قيمة المتغير في كل دورة من حلقة تكرارية (مثل for _ in range(3)).
4. **اصطلاح للتسمية:** يستخدم المبرمجون الـ underscore كاصطلاح للإشارة إلى متغيرات أو دوال خاصة (private) أو محمية (protected) لا يُفترض الوصول إليها مباشرة من خارج الكلاس، على الرغم من أن بايثون لا تفرض ذلك بقوة.

['#بايثون', '#برمجة', '#نصائح_برمجية', '#PythonTips', '#Coding']
❤1
✨ تحسين أداء 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', '#PythonTips', '#كود']
💡 استخدام enumerate في بايثون لتبسيط الحلقات التكرارية 💡

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

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

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


الدالة `enumerate()` تسمح لك بالمرور على قائمة (أو أي كائن قابل للتكرار) والحصول على كل من الفهرس والقيمة في كل تكرار. هذا يلغي الحاجة إلى متغير عداد منفصل.

['#بايثون', '#برمجة', '#enumerate', '#PythonTips', '#تعليم_برمجة']
🚀 تحسين سرعة الدوال في بايثون باستخدام `lru_cache`

هل تعاني من بطء بعض الدوال التي تستدعيها مراراً وتكراراً بنفس المدخلات؟ دعنا نكتشف كيف يمكن لـ `lru_cache` تسريعها!

from functools import lru_cache
import time

@lru_cache(maxsize=None)
def slow_function(n):
"""دالة بطيئة تحاكي عملية مكلفة."""
time.sleep(1) # محاكاة عملية تستغرق وقتاً
return n * 2

# الاستدعاء الأول (سيستغرق وقتاً)
start_time = time.time()
result1 = slow_function(5)
end_time = time.time()
print(f"الاستدعاء الأول: {result1}, الوقت المستغرق: {end_time - start_time:.2f} ثانية")

# الاستدعاء الثاني بنفس المدخلات (سيكون سريعاً جداً)
start_time = time.time()
result2 = slow_function(5)
end_time = time.time()
print(f"الاستدعاء الثاني: {result2}, الوقت المستغرق: {end_time - start_time:.2f} ثانية")

# استدعاء بمدخلات مختلفة (سيستغرق وقتاً مجدداً)
start_time = time.time()
result3 = slow_function(10)
end_time = time.time()
print(f"الاستدعاء الثالث: {result3}, الوقت المستغرق: {end_time - start_time:.2f} ثانية")


الديكور `@lru_cache(maxsize=None)` يقوم بتخزين نتائج استدعاءات الدالة. عندما تُستدعى الدالة مرة أخرى بنفس المدخلات، يتم إرجاع النتيجة المخزنة مباشرة بدلاً من إعادة حسابها، مما يؤدي إلى تسريع كبير في الأداء، خاصة للدوال التي تتطلب عمليات حسابية معقدة أو مكلفة.

['#بايثون', '#برمجة', '#تحسين_الأداء', '#lru_cache', '#PythonTips', '#Coding']
💡 تحسين أداء 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', '#كود', '#تعلم_البرمجة', '#PythonTips']
💡 نصيحة بايثون سريعة: فك ضغط القوائم بكفاءة! 🐍

هل سئمت من كتابة حلقات متكررة لفك ضغط القوائم؟ إليك طريقة بايثون المختصرة والفعالة باستخدام `*`!

my_list = [1, 2, 3]
new_list = [*my_list, 4, 5]
print(new_list)


المعامل `*` (النجمة) يُستخدم لفك ضغط عناصر القائمة (أو أي iterable آخر) مباشرة داخل قائمة جديدة. هذا يجعل الكود أقصر وأكثر قابلية للقراءة.

['#بايثون', '#برمجة', '#نصائح_برمجية', '#PythonTips', '#ListUnpacking']
❤1
🚀 تسريع دوال Python باستخدام List Comprehensions!

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

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


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

['#Python', '#برمجة', '#ListComprehensions', '#PythonTips', '#تطوير']
🐍 تحسين أداء Python باستخدام List Comprehensions ✨

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

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

# مقارنة مع الطريقة التقليدية:
squares_loop = []
for x in numbers:
squares_loop.append(x**2)
print(squares_loop)


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

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

هل تعاني من بطء في تشغيل برامج بايثون بسبب استيراد العديد من الوحدات؟ هناك طريقة سريعة لتحسين ذلك!

import sys

# قم بتسجيل المسار لمرة واحدة
if 'my_module' not in sys.modules:
import my_module

# الآن يمكنك استخدام my_module بأمان وسرعة
my_module.do_something()


عندما تستورد وحدة لأول مرة، يقوم بايثون بتحميلها وتخزينها في `sys.modules`. في المرات اللاحقة، يتم استرجاع الوحدة من الذاكرة مباشرة، مما يسرع عملية الاستيراد بشكل كبير. هذا الكود يتحقق مما إذا كانت الوحدة موجودة بالفعل في `sys.modules` قبل محاولة استيرادها.

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

هل سئمت من توقف برنامجك عند حدوث خطأ؟ تعلم كيف تتعامل مع الاستثناءات (Exceptions) في بايثون لتجعل كودك أكثر قوة ومرونة.

try:
result = 10 / 0
except ZeroDivisionError:
print("لا يمكن القسمة على صفر!")
finally:
print("تم الانتهاء من محاولة العملية.")


استخدم كتلة `try` لتضمين الكود الذي قد يسبب خطأ. إذا حدث خطأ من نوع `ZeroDivisionError` (القسمة على صفر)، سيتم تنفيذ كتلة `except`. كتلة `finally` تُنفذ دائمًا، سواء حدث خطأ أم لا.

['#بايثون', '#برمجة', '#تعليم', '#تطوير', '#نصائح_برمجية', '#Exceptions', '#PythonTips']