بايثون هي لغة متعددة الاستخدامات وقوية، وإتقان ميزاتها المتقدمة يمكن أن يعزز بشكل كبير كفاءة البرمجة وسهولة القراءة. فيما يلي بعض نصائح Python المتقدمة لمساعدتك على كتابة تعليمات برمجية أفضل وأكثر وضوحًا وأكثر كفاءة.
لقد كتبت كتابين صغيرين لقراءتهما في عطلة نهاية الأسبوع ويغطيان لغة بايثون، إليك الروابط: (1) https://leanpub.com/learnpython_inweekend_pt1 & (2) https://leanpub.com/learnpython_inweekend_pt2
توفر عمليات فهم القائمة طريقة مختصرة لإنشاء القوائم. يمكنها في كثير من الأحيان أن تحل محل حلقات for التقليدية والعبارات الشرطية، مما يؤدي إلى كود أكثر وضوحًا وأكثر قابلية للقراءة.
# Traditional approach numbers = [1, 2, 3, 4, 5] squared_numbers = [] for num in numbers: squared_numbers.append(num ** 2) # Using list comprehension squared_numbers = [num ** 2 for num in numbers]
تسمح لك تعبيرات المولدات بإنشاء تكرارات بطريقة مختصرة دون تخزين التسلسل بأكمله في الذاكرة، مما يجعلها أكثر كفاءة في الذاكرة.
# List comprehension (creates a list) squared_numbers = [num ** 2 for num in numbers] # Generator expression (creates an iterator) squared_numbers = (num ** 2 for num in numbers)
عند التكرار على عنصر قابل للتكرار والحاجة إلى تتبع فهرس كل عنصر، فإن وظيفة enumerate() لا تقدر بثمن.
fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")
يعد استخدام طريقة join() لتسلسل السلاسل أكثر كفاءة من استخدام عامل التشغيل، خاصة بالنسبة للسلاسل الكبيرة.
fruits = ['apple', 'banana', 'cherry'] fruit_string = ', '.join(fruits) print(fruit_string) # Output: apple, banana, cherry
افتراضيًا، تقوم Python بتخزين سمات المثيلات في القاموس، والتي يمكن أن تستهلك ذاكرة كبيرة. يمكن أن يؤدي استخدام __slots__ إلى تقليل استخدام الذاكرة عن طريق تخصيص الذاكرة لمجموعة ثابتة من متغيرات المثيلات.
class Point: __slots__ = ['x', 'y'] def __init__(self, x, y): self.x = x self.y = y
يسمح لك مدير السياق contextlib.suppress بتجاهل استثناءات محددة، وتبسيط التعليمات البرمجية الخاصة بك عن طريق تجنب عمليات المحاولة باستثناء الكتل غير الضرورية.
from contextlib import suppress with suppress(FileNotFoundError): with open('file.txt', 'r') as file: contents = file.read()
توفر وحدة itertools مجموعة من الوظائف الفعالة للعمل مع التكرارات. يمكن لوظائف مثل المنتج والتباديل والمجموعات أن تبسط العمليات المعقدة.
import itertools # Calculate all products of an input print(list(itertools.product('abc', repeat=2))) # Calculate all permutations print(list(itertools.permutations('abc')))
يمكن لمصمم ديكور functools.lru_cache تخزين نتائج استدعاءات الوظائف باهظة الثمن مؤقتًا، مما يؤدي إلى تحسين الأداء.
from functools import lru_cache @lru_cache(maxsize=32) def fibonacci(n): if n9. مصممو الديكور الرئيسيون للكود الأنظف
تعد أدوات الديكور أداة قوية لتعديل سلوك الوظائف أو الفئات. يمكن استخدامها للتسجيل والتحكم في الوصول والمزيد.
def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()10. استخدم الحيلة مقابل الآخر
تسمح لك البنية for-else في Python بتنفيذ كتلة else بعد اكتمال حلقة for بشكل طبيعي (أي دون مواجهة عبارة Break). يمكن أن يكون هذا مفيدًا بشكل خاص في عمليات البحث.
for n in range(2, 10): for x in range(2, n): if n % x == 0: print(f"{n} equals {x} * {n//x}") break else: # Loop fell through without finding a factor print(f"{n} is a prime number")
خاتمة
من خلال دمج نصائح Python المتقدمة هذه في سير عمل التطوير الخاص بك، يمكنك كتابة تعليمات برمجية أكثر كفاءة وقابلية للقراءة وقابلة للصيانة.
سواء كنت تعمل على تحسين استخدام الذاكرة باستخدام __slots__، أو تبسيط عمليات السلسلة باستخدام join()، أو الاستفادة من قوة وحدة itertools، فإن هذه التقنيات يمكنها تحسين مهاراتك في برمجة Python بشكل كبير.
استمر في استكشاف هذه المفاهيم وممارستها للبقاء في المقدمة في رحلتك إلى لغة بايثون.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3