سؤال

مليء بيونثون باختصارات أنيقة قليلا.

علي سبيل المثال:

self.data = map(lambda x: list(x), data)

و (رغم أنها ليست جميلة جدا)

tuple(t[0] for t in self.result if t[0] != 'mysql' and t[0] != 'information_schema')

من بين عدد لا يحصى من الآخرين.

وقالوا إنهم في قناة IRC، قالوا "الكثيرون أكثر لمعرفةهم جميعا".

أعتقد أننا يجب أن ندرج بعض هنا، وأنا أحب استخدام هذه الاختصارات لتقصير التعليمات البرمجية الخاصة بي. أنا متأكد من أن هذا سيستفيد الكثيرين.

هل كانت مفيدة؟

المحلول

self.data = map(lambda x: list(x), data)

هو dreck - استخدام

self.data = map(list, data)

إذا كنت أ map متعصب (قائمة الفهم مفضلة عموما هذه الأيام). بشكل عام، lambda x: somecallable(x) تستطيع دائماً يتم تغيير المنتج إلى فقط somecallable, ، في كل السياق، مع عدم وجود تأثير جيد.

أما بالنسبة إلى الاختصارات بشكل عام، فإن زوجتي وأنا بذل قصارى جهدنا لسرد أهمها ومفيدة في الجزء الأول من الإصدار الثاني من بيثون كتاب الطبخ - قد تكون بداية.

نصائح أخرى

قدم Alex Martelli نسخة أقصر من مثالك الأول. يجب أن أقدم نسخة أقصر (قليلا) من الثانية:

tuple(t[0] for t in self.result if t[0] not in ('mysql', 'information_schema'))

من الواضح أن المشغل يصبح أكثر فائدة من القيم التي تختبرها.

أود أيضا أن أؤكد أن تقصير و Refactoring هو جيد فقط إلى حد أنه يحسن الوضوح والقراءة. (ما لم تكن هناك رمز للغولف؛)

لست متأكدا مما إذا كان هذا اختصارا، لكنني أحب ذلك:

>>> class Enum(object):
        def __init__(self, *keys):
            self.keys = keys
            self.__dict__.update(zip(keys, range(len(keys))))
        def value(self, key):
            return self.keys.index(key)          

>>> colors = Enum("Red", "Blue", "Green", "Yellow", "Purple")
>>> colors.keys
('Red', 'Blue', 'Green', 'Yellow', 'Purple')
>>> colors.Green
2

(لا أعرف من جاء بهذا، لكنه لم يكن لي.)

أحببت دائما عن "UNZIP"

>>> zipped = [('a', 1), ('b', 2), ('c', 3)]
>>> zip(*zipped)
[('a', 'b', 'c'), (1, 2, 3)]
>>> 
>>> l,n = zip(*zipped)
>>> l
('a', 'b', 'c')
>>> n
(1, 2, 3)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top