جدول المحتويات
9.10. تعبيرات المولدات #
يمكن ترميز بعض المولدات البسيطة بإيجاز كتعبيرات باستخدام بنية نحوية مشابهة لفهم القوائم، ولكن باستخدام أقواس بدلاً من الأقواس المربعة. صُممت هذه التعبيرات للحالات التي يُستخدم فيها المولد مباشرةً بواسطة دالة مُحيطة. تعبيرات المولدات أكثر إحكامًا، لكنها أقل تنوعًا من تعريفات المولدات الكاملة، وتميل إلى أن تكون أكثر ملاءمة للذاكرة من فهم القوائم المكافئ.
أمثلة:
>>> sum(i*i for i in range(10)) # sum of squares
285
>>> xvec = [10, 20, 30]
>>> yvec = [7, 5, 3]
>>> sum(x*y for x,y in zip(xvec, yvec)) # dot product
260
>>> unique_words = set(word for line in page for word in line.split())
>>> valedictorian = max((student.gpa, student.name) for student in graduates)
>>> data = 'golf'
>>> list(data[i] for i in range(len(data)-1, -1, -1))
['f', 'l', 'o', 'g']
باستثناء أمر واحد. تحتوي كائنات الوحدة النمطية على سمة سرية للقراءة فقط تُسمى __dict__، والتي تُرجع القاموس المستخدم لتنفيذ مساحة اسم الوحدة النمطية؛ الاسم __dict__ هو سمة، وليس اسمًا عامًا. من الواضح أن استخدام هذه السمة ينتهك مبدأ تنفيذ مساحة الاسم، ويجب أن يقتصر على أشياء مثل مصححات الأخطاء بعد الوفاة.