Попытка понять, что лучше в Python, создавая переменные или используя выражения - PullRequest
0 голосов
/ 23 декабря 2010

Одна из практик, с которыми я столкнулся в Python с самого начала, заключается в уменьшении количества переменных, которые я создаю, по сравнению с числом, которое я создал бы при попытке сделать то же самое в SAS или Fortran

например, вот код, который я написал сегодня вечером:

def idMissingFilings(dEFilings,indexFilings):
    inBoth=set(indexFilings.keys()).intersection(dEFilings.keys())
    missingFromDE=[]
    for each in inBoth:
        if len(dEFilings[each])<len(indexFilings[each]):

            dEtemp=[]
            for filing in dEFilings[each]:
                #dateText=filing.split("\\")[-1].split('-')[0]
                #year=dateText[0:5]
                #month=dateText[5:7]
                #day=dateText[7:]
                #dETemp.append(year+"-"+month+"-"+day+"-"+filing[-2:])    
            dEtemp.append(filing.split('\\')[-1].split('-')[0][1:5]+"-"+filing.split('\\')[-1].split('-')[0][5:7]+"-"+filing.split('\\')[-1].split('-')[0][7:]+"-"+filing[-2:])
            indexTemp=[]
            for infiling in indexFilings[each]:
                indexTemp.append(infiling.split('|')[3]+"-"+infiling[-6:-4])
            tempMissing=set(indexTemp).difference(dEtemp)
            for infiling in indexFilings[each]:
                if infiling.split('|')[3]+"-"+infiling[-6:-4] in tempMissing:
                    missingFromDE.append(infiling)
    return missingFromDE

Теперь я разделяю одну из строк, которые обрабатываю 4 раза, в строке dEtemp.append (бла-бла-бла)

filing.split('\\')

Исторически в Fortran или SAS, если бы я попытался сделать то же самое, я бы «нарезал» свою строку один раз и назначил переменную для каждой части строки, которую я собирался использовать в этом выражении.

Я постоянно заставляю себя использовать выражения вместо того, чтобы сначала разрешить значение и использовать значение. Единственная причина, по которой я это делаю, заключается в том, что я учусь, имитируя код других людей, но у меня в голове был вопрос: где найти убедительное обсуждение того, почему один лучше другого

Код сравнивает набор документов на диске и список источников этих документов и проверяет, все ли из источника представлены на диске

Хорошо, закомментированный раздел гораздо легче читать, и как я решил ответить на носклос ответ

1 Ответ

5 голосов
/ 23 декабря 2010

Да, не лучше все выразить.Пожалуйста, используйте переменные.

Использование переменных не только лучше, потому что вы выполните операцию только один раз и сохраните значение для многократного использования.Основная причина в том, что таким образом код становится более читабельным.Если вы называете переменную правильной, она становится бесплатной неявной документацией!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...