Одна из практик, с которыми я столкнулся в 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, если бы я попытался сделать то же самое, я бы «нарезал» свою строку один раз и назначил переменную для каждой части строки, которую я собирался использовать в этом выражении.
Я постоянно заставляю себя использовать выражения вместо того, чтобы сначала разрешить значение и использовать значение. Единственная причина, по которой я это делаю, заключается в том, что я учусь, имитируя код других людей, но у меня в голове был вопрос: где найти убедительное обсуждение того, почему один лучше другого
Код сравнивает набор документов на диске и список источников этих документов и проверяет, все ли из источника представлены на диске
Хорошо, закомментированный раздел гораздо легче читать, и как я решил ответить на носклос ответ