2010-12-23 2 views
0

처음부터 파이썬에서 얻은 관행 중 하나는 내가하려고 할 때 생성하는 수와 비교하여 생성하는 변수의 수를 줄이는 것입니다 파이썬에서 변수를 생성하거나 표현식을 사용하는 것이 더 낫다는 것을 이해하려고 시도합니다.

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 

지금 내가 선 dEtemp.append (ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ 4 번 처리하고있는 문자열 중 하나를 분할 : SAS 또는 포트란

예를 들어

에서 같은 일이 여기에 내가 오늘 밤에 쓴 일부 코드)

filing.split('\\') 

역사적으로 포트란이나 SAS에서 같은 것을 시도한다면 문자열을 한 번 잘라내어이 표현식에서 사용할 문자열의 각 부분에 변수를 할당했습니다.

나는 항상 값으로 해석하고 값을 사용하는 대신 표현을 사용하도록하고있다. 내가 이것을하는 유일한 이유는 다른 사람들의 코드를 모방하여 배우는 것이지만이 질문을하는 것이 내 마음의 뒤쪽에있다 - 왜 다른 사람이 더 나은지에 대한 이유있는 토론을 어디서 찾을 수 있는가

이 코드는 드라이브에있는 문서 세트와 해당 문서의 소스 목록을 비교하여 소스에있는 모든 소스가 드라이브에 표시되는지 확인합니다.

좋아요, 주석 처리 된 섹션은 훨씬 읽기 쉽고 어떻게 결정 했습니까? nosklos 답변에 응답하려면

답변

5

그래, 표현에 모든 것을 넣는 것이 낫지 않습니다. 변수를 사용하십시오.

변수를 사용하는 것은 한 번만 작업을 수행하고 여러 용도로 값을 저장하기 때문에 더 나은 것은 아닙니다. 주된 이유는 코드가 그렇게 쉽게 읽을 수있게된다는 것입니다. 변수의 이름을 올바르게 지정하면, 암묵적인 문서로 두 배가됩니다!

+0

어쨌든 나는 나쁜 습관을 배우고 강요하고 있다고 제안하고 있습니다. – PyNEwbie

+2

나는 nosklo와 동의한다. 나는 변수의 수를 최소화하는 것이 파이썬이나 다른 어떤 것에서도 우수 사례라는 것을 결코 읽지 않았다. 그 흩어져있는 모든 스플릿() 통화는 저에게 두통을 안겨줍니다. 당신의 주석 처리 된 코드는 1 줄짜리 몬스터보다 훨씬 더 명확합니다. 게다가 여러 번 쓰는 것이 아니라'filing.split (...') 표현을 한 번만 평가하면 상당한 성능 저하를 초래할 수 있습니다. 'year, month, day = datetext.split ('/')'(날짜 필드가 '/'로 구분된다고 가정하고있다.) – PaulMcG

+0

뭔가 존재하지 않는다. 중복 적으로 코드를 제거하는 법에 관한 규칙 책? –

관련 문제